<?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>231239</bug_id>
          
          <creation_ts>2021-10-05 10:18:54 -0700</creation_ts>
          <short_desc>Prepare to switch from WTF::Variant to std::variant</short_desc>
          <delta_ts>2021-10-11 10:24:32 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>alecflett</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</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>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</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>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1800623</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-05 10:18:54 -0700</bug_when>
    <thetext>Prepare to switch from WTF::Variant to std::variant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800628</commentid>
    <comment_count>1</comment_count>
      <attachid>440232</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-05 10:26:48 -0700</bug_when>
    <thetext>Created attachment 440232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800645</commentid>
    <comment_count>2</comment_count>
      <attachid>440236</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-05 10:56:43 -0700</bug_when>
    <thetext>Created attachment 440236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800660</commentid>
    <comment_count>3</comment_count>
      <attachid>440236</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-05 11:19:26 -0700</bug_when>
    <thetext>Comment on attachment 440236
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=440236&amp;action=review

&gt; Source/JavaScriptCore/runtime/CacheUpdate.cpp:41
&gt;  CacheUpdate::CacheUpdate(CacheUpdate&amp;&amp; other)

Just had another idea for this. Can we try this?

    CacheUpdate::CacheUpdate(CacheUpdate&amp;&amp;) = default;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800666</commentid>
    <comment_count>4</comment_count>
      <attachid>440236</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-05 11:28:46 -0700</bug_when>
    <thetext>Comment on attachment 440236
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=440236&amp;action=review

&gt;&gt; Source/JavaScriptCore/runtime/CacheUpdate.cpp:41
&gt;&gt;  CacheUpdate::CacheUpdate(CacheUpdate&amp;&amp; other)
&gt; 
&gt; Just had another idea for this. Can we try this?
&gt; 
&gt;     CacheUpdate::CacheUpdate(CacheUpdate&amp;&amp;) = default;

We could also experiment with removing the explicit move constructor and assignment operator from the class entirely. I am pretty sure the compiler will generate the correct code if we just don’t say anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800692</commentid>
    <comment_count>5</comment_count>
      <attachid>440243</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-05 12:00:42 -0700</bug_when>
    <thetext>Created attachment 440243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800697</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-05 12:13:01 -0700</bug_when>
    <thetext>Removing it causes compiler errors, but =default works fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800799</commentid>
    <comment_count>7</comment_count>
      <attachid>440279</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-05 15:24:44 -0700</bug_when>
    <thetext>Created attachment 440279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801008</commentid>
    <comment_count>8</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2021-10-06 02:50:01 -0700</bug_when>
    <thetext>There are several appearances in for example CDMProxy.h and related files that are not being changed. In the GTK/WPE ports, these things are built when experimental features are enabled and I don&apos;t recall if we have them enabled in EWS so they won&apos;t fail. Anyway, I don&apos;t know if you&apos;re taking a step by step approach but those would need changing as well or things will break on our side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801009</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-10-06 02:54:54 -0700</bug_when>
    <thetext>GTK/EWS developer builds have experimental features enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802678</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-11 10:23:01 -0700</bug_when>
    <thetext>Committed r283906 (242780@main): &lt;https://commits.webkit.org/242780@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440279.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802681</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-11 10:24:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/84105079&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440232</attachid>
            <date>2021-10-05 10:26:48 -0700</date>
            <delta_ts>2021-10-05 11:02:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231239-20211005102647.patch</filename>
            <type>text/plain</type>
            <size>79327</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjUyMmJiMzBhYWUyYTRlODZmMzFlMDQ2YjBkZjY0NjdjZGYzMjRkLi5jMjlhZWVjNDE5MWY2Njg2
MzYxNWM0ZWRjYTc0ZmZkYjA1NzM3MGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50
IHRvIHN0ZDo6dmFyaWFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMxMjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogcGFyc2VyL0xleGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlSGV4KToKKyAgICAgICAgKEpTQzo6
TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlT2N0
YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKToKKyAgICAgICAgKiBy
dW50aW1lL0NhY2hlUGF5bG9hZC5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlUGF5bG9hZDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlUGF5bG9hZDo6c2l6ZSBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9DYWNoZVVwZGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlVXBkYXRl
OjpDYWNoZVVwZGF0ZSk6CisKIDIwMjEtMTAtMDQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRGlzcGxheSByZXR1cm4gdmFsdWVzIGluIG5pY2VyIHdheSBpbiB0
aGUganNjIFJFUEwgYW5kIGFkZCBhIHByZXR0eVByaW50IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4NDgwMmU4
NjAzYjY5ZDZiNGYwOWI2NTQyNjY5ZTQzMTU3ZjQ1N2MuLmUwMWYwMzhiOTY0ZjMyYTk3MDFhN2Jk
OGE3ZGYzY2UyNTViNTY4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMDUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBQcmVwYXJl
IHRvIHN3aXRjaCBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIHBpZWNlcyBv
ZiBidWcgMjMxMDg2IHRoYXQgY2FuIGJlIGRvbmUgd2l0aG91dCBjaGFuZ2luZyBiZWhhdmlvci4K
KworICAgICAgICAxLiBJdCBtYWtlcyBXVEY6OmdldF9pZiBsb29rIG1vcmUgbGlrZSBzdGQ6Omdl
dF9pZiBieSB0YWtpbmcgYSBwb2ludGVyIHRvIGEgdmFyaWFudCBpbnN0ZWFkIG9mIGEgcmVmZXJl
bmNlLgorICAgICAgICAyLiBzdGQ6OnZpc2l0IGlzIHBpY2tpZXIgdGhhbiBXVEY6OnZpc2l0LiAg
VGhlIGZvcm1lciBhbGxvd3MgdGFraW5nIGxhbWJkYXMgd2l0aCBkaWZmZXJlbnQgcmV0dXJuIHR5
cGVzIGFzIGxvbmcKKyAgICAgICAgYXMgdGhlIHJldHVybiB0eXBlcyBjYW4gYmUgY29udmVydGVk
IHRvIHRoZSBvdmVyYWxsIGRlc2lyZWQgcmV0dXJuIHR5cGUuICBzdGQ6OnZpc2l0IGhhcyBhIHN0
YXRpY19hc3NlcnQgdGhhdCB0aGUKKyAgICAgICAgcmV0dXJuIHR5cGVzIG9mIGFsbCB0aGUgbGFt
YmRhcyBhcmUgYWxsIGV4YWN0bHkgdGhlIHNhbWUgdHlwZSwgc28gSSBleHBsaWNpdGx5IGRlY2xh
cmUgdGhlIHJldHVybiB0eXBlIG9mIG1hbnkgbGFtYmRhcy4KKyAgICAgICAgMy4gSXQgYWxzbyBy
ZXNvbHZlcyBzb21lIHR5cGVzIHRoYXQgd2lsbCBiZWNvbWUgYW1iaWd1b3VzIGJ5IHVzaW5nIFdU
Rjo6aW5fcGxhY2UsCisgICAgICAgIHdoaWNoIHdpbGwgYmVjb21lIHdyYXBwZWQgYnkgc3RkOjpp
bl9wbGFjZV90eXBlIHRoZW4gcmVtb3ZlZC4KKyAgICAgICAgNC4gSXQgYWRkcyBhIGZldyBleHBs
aWNpdCBXVEY6OiBhbmQgI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+IHRoYXQgd2lsbCBiZSBuZWVk
ZWQgYWZ0ZXIgcmVtb3ZpbmcgVmFyaWFudCBmcm9tIEZvcndhcmQuaC4KKyAgICAgICAgNS4gSXQg
cmVtb3ZlcyB0aGUgZmFzdCBtYWxsb2MgY2hlY2sgaW4gdGhlIG9uZSBwbGFjZSBhIFZhcmlhbnQg
aXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGluIEtleWVkRGVjb2RlckdlbmVyaWMuY3BwCisgICAg
ICAgICh3aGljaCBpcyBmb3Igbm9uLWNvY29hIHBsYXRmb3JtcykgYmVjYXVzZSBzdGQ6OnZhcmlh
bnQgaXNuJ3QgZmFzdCBhbGxvY2F0ZWQuCisKKyAgICAgICAgKiB3dGYvTGlrZWx5RGVuc2VVbnNp
Z25lZEludGVnZXJTZXQuaDoKKyAgICAgICAgKFdURjo6TGlrZWx5RGVuc2VVbnNpZ25lZEludGVn
ZXJTZXQ6Oml0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAqIHd0Zi9WYXJpYW50
Lmg6CisgICAgICAgIChXVEY6OmdldF9pZik6CisKIDIwMjEtMTAtMDUgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3ctdXAgIzI6IFdURjo6UmV0YWlu
UHRyPD4gYWxsb3dzIGFzc2lnbm1lbnQgb2YgdHdvIHBvaW50ZXIgdHlwZXMgdGhhdCBhcmUgbm90
IGFzc2lnbmFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYjczN2IyNjc3NGUxMzIxZTU1ZmExMjc4ZTQ0NWMx
MDQyMmU0OTFlLi5mYThkMDcxZDFlODk2MjVkNzk3YjFjMmRiMDlmZmZiNjNhNzUwMjJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTA4IEBACisyMDIxLTEwLTA1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJlcGFyZSB0byBzd2l0Y2ggZnJv
bSBXVEY6OlZhcmlhbnQgdG8gc3RkOjp2YXJpYW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5KToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkaW5nRXhjZXB0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRJY2VDYW5kaWRhdGUpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6aXNBdHRhY2hlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6Omhhc1NvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9z
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVyOjpjYW52YXMgY29uc3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW50UG9pbnRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpvYmplY3RBdHRyaWJ1dGVWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpyZWN0QXR0cmli
dXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dmVj
dG9yQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6b3B0aW9uU2V0QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6cGFpckF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnVpbnQ2NEF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnVybEF0dHJpYnV0ZVZhbHVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnBhdGhBdHRyaWJ1dGVWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpjb2xvckF0dHJp
YnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmZs
b2F0QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6ZG91YmxlQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6dW5zaWduZWRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgICog
YmluZGluZ3MvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRX
ZWJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9KU1ZhbHVlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudDo6bWV0aG9kRGV0YWlscyBj
b25zdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6b3BlcmF0b3IgSlNDOjpK
U1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVGb250V2VpZ2h0KToKKyAgICAgICAgKiBkb20v
TWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6bWVtb3J5
Q29zdCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcpOgorICAgICAgICAqIGVkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6Om1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL1VSTFNlYXJjaFBhcmFtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVUkxT
ZWFyY2hQYXJhbXM6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0NvbnRleHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1
aWxkT2JqZWN0Rm9yQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
aW5kZXhGb3JEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwcm9ncmFt
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlvbmFyeTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6
OktleWVkRGVjb2RlckdlbmVyaWM6OmdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYURldmljZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjppbWFnZU9yTWVkaWFGaWxl
c0NvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6bGVuZ3Ro
SW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6ZmxhdHRlbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YTo6cHJlcGFyZUZvclVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtRGF0YTo6YXNCbG9iVVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZUN1cnJl
bnRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SFRUUEJvZHkpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsSGFuZGxlOjplbmFibGVTU0xGb3JIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3Jt
RGF0YVN0cmVhbTo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
U0xWZXJpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU1NMVmVyaWZpZXI6OkN1cmxT
U0xWZXJpZmllcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVT
b3VwTWVzc2FnZUJvZHkgY29uc3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckZv
bnRSYXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JGb250UmF3KToK
KwogMjAyMS0xMC0wNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCBmcm9tIFJ1bGVTZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZjg1ZGYzZjBhZTNiOWYwYzYzYWE3YzkxM2U4MjYyNzJmYTVmYTNlMy4uZDFkYWY2NjA1OWMz
NDk1NWJmNDQzYmFjN2IxYjBlOTkwOWIxZWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6dmFy
aWFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVy
ZW5jZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJl
bmNlLmg6CisgICAgICAgIChJUEM6OkZvcm1EYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBsZUN1cnNvcjo6bG9jYXRlSXRlcmF0b3Ig
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcu
aDoKKwogMjAyMS0xMC0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBTUEkgdG8gbGF1bmNoIGEgc2VydmljZSBzZXJ2aWNlIHdvcmtlciBpbiBhIFdLV2Vi
VmlldyBhbmQgZXhwb3NlIHNlcnZpY2Ugd29ya2VyIHRvIGluamVjdGVkIGJ1bmRsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBiNGM4
Zjg2MGI1MTRlNmQ3OWRmMDFhYzdmMjk2ZmMwODFkZTdhMWY2Li5hY2YzNjRiMjE4ZThkY2QwNDJi
YzcxYzc1N2I1NjVjNWIyNjdiM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTA1NDgsMTMgKzEwNTQ4LDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCiAKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGhhdmUgYSB3YXkgdG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9m
IHJlZ2lzdGVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzMDk5Ci0gICAgVmVjdG9yPFZhcmlhbnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1
bGF0ZUludDMyT3BlcmFuZCwgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+LCBKU0NfRE9NSklUX1NJ
R05BVFVSRV9NQVhfQVJHVU1FTlRTX0lOQ0xVRElOR19USElTPiBvcGVyYW5kczsKKyAgICB1c2lu
ZyBPcGVyYW5kVmFyaWFudCA9IFZhcmlhbnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1bGF0
ZUludDMyT3BlcmFuZCwgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+OworICAgIFZlY3RvcjxPcGVy
YW5kVmFyaWFudCwgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdf
VEhJUz4gb3BlcmFuZHM7CiAgICAgVmVjdG9yPEdQUlJlZywgSlNDX0RPTUpJVF9TSUdOQVRVUkVf
TUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4gcmVnczsKIAogICAgIGF1dG8gYXBwZW5kQ2Vs
bCA9IFsmXShFZGdlJiBlZGdlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJh
bmQodGhpcywgZWRnZSk7CiAgICAgICAgIHJlZ3MuYXBwZW5kKG9wZXJhbmQuZ3ByKCkpOwotICAg
ICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChPcGVyYW5kVmFyaWFudChXVEY6OmluX3BsYWNlPFNwZWN1bGF0ZUNlbGxPcGVyYW5k
PiwgV1RGTW92ZShvcGVyYW5kKSkpOwogICAgIH07CiAKICAgICBhdXRvIGFwcGVuZFN0cmluZyA9
IFsmXShFZGdlJiBlZGdlKSB7CkBAIC0xMDU2MiwxOSArMTA1NjMsMTkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIGdwciA9
IG9wZXJhbmQuZ3ByKCk7CiAgICAgICAgIHJlZ3MuYXBwZW5kKGdwcik7CiAgICAgICAgIHNwZWN1
bGF0ZVN0cmluZyhlZGdlLCBncHIpOwotICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShv
cGVyYW5kKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChPcGVyYW5kVmFyaWFudChXVEY6Omlu
X3BsYWNlPFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiwgV1RGTW92ZShvcGVyYW5kKSkpOwogICAgIH07
CiAKICAgICBhdXRvIGFwcGVuZEludDMyID0gWyZdKEVkZ2UmIGVkZ2UpIHsKICAgICAgICAgU3Bl
Y3VsYXRlSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CiAgICAgICAgIHJlZ3MuYXBw
ZW5kKG9wZXJhbmQuZ3ByKCkpOwotICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVy
YW5kKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChPcGVyYW5kVmFyaWFudChXVEY6OmluX3Bs
YWNlPFNwZWN1bGF0ZUludDMyT3BlcmFuZD4sIFdURk1vdmUob3BlcmFuZCkpKTsKICAgICB9Owog
CiAgICAgYXV0byBhcHBlbmRCb29sZWFuID0gWyZdKEVkZ2UmIGVkZ2UpIHsKICAgICAgICAgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICAgICAgcmVncy5h
cHBlbmQob3BlcmFuZC5ncHIoKSk7Ci0gICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9w
ZXJhbmQpKTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5kKE9wZXJhbmRWYXJpYW50KFdURjo6aW5f
cGxhY2U8U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+LCBXVEZNb3ZlKG9wZXJhbmQpKSk7CiAgICAg
fTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKaW5kZXggMGZiZTBiYzhmN2FmZjFkYmEyNjZkMjI4NjYxM2ZjZTcxOTM5NGZhOS4u
MmE4YTY3YWYzZjIyY2I1ZmMyNTQyODI1MmYyNmZkYTIzOTRmODM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIEFMV0FZU19JTkxJ
TkUgYXV0byBMZXhlcjxUPjo6cGFyc2VIZXgoKSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNl
UmVzdWx0PgogICAgIH0gd2hpbGUgKGlzQVNDSUlIZXhEaWdpdE9yU2VwYXJhdG9yKG1fY3VycmVu
dCkgJiYgbWF4aW11bURpZ2l0cyA+PSAwKTsKIAogICAgIGlmIChMSUtFTFkobWF4aW11bURpZ2l0
cyA+PSAwICYmIG1fY3VycmVudCAhPSAnbicpKQotICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VS
ZXN1bHQgeyBoZXhWYWx1ZSB9OworICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBz
dGF0aWNfY2FzdDxkb3VibGU+KGhleFZhbHVlKSB9OwogCiAgICAgLy8gTm8gbW9yZSBwbGFjZSBp
biB0aGUgaGV4VmFsdWUgYnVmZmVyLgogICAgIC8vIFRoZSB2YWx1ZXMgYXJlIHNoaWZ0ZWQgb3V0
IGFuZCBwbGFjZWQgaW50byB0aGUgbV9idWZmZXI4IHZlY3Rvci4KQEAgLTE2MDksNyArMTYwOSw3
IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoKSAtPiBzdGQ6Om9w
dGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIH0gd2hpbGUgKGlzQVNDSUlCaW5hcnlEaWdp
dE9yU2VwYXJhdG9yKG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKICAgICBpZiAoTElLRUxZ
KCFpc0FTQ0lJRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDAgJiYgbV9j
dXJyZW50ICE9ICduJykpCi0gICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IGJpbmFy
eVZhbHVlIH07CisgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IHN0YXRpY19jYXN0
PGRvdWJsZT4oYmluYXJ5VmFsdWUpIH07CiAKICAgICBmb3IgKGludCBpID0gbWF4aW11bURpZ2l0
cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0x
NjY1LDcgKzE2NjUsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlT2N0YWwo
KSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIH0gd2hpbGUgKGlzQVND
SUlPY3RhbERpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAogICAg
IGlmIChMSUtFTFkoIWlzQVNDSUlEaWdpdE9yU2VwYXJhdG9yKG1fY3VycmVudCkgJiYgZGlnaXQg
Pj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKLSAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVz
dWx0IHsgb2N0YWxWYWx1ZSB9OworICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBz
dGF0aWNfY2FzdDxkb3VibGU+KG9jdGFsVmFsdWUpIH07CiAKICAgICBmb3IgKGludCBpID0gbWF4
aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAgICAgcmVjb3JkOChkaWdpdHNb
aV0pOwpAQCAtMTcyNCw3ICsxNzI0LDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+Ojpw
YXJzZURlY2ltYWwoKSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgICAg
ICB9IHdoaWxlIChpc0FTQ0lJRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpICYmIGRpZ2l0ID49
IDApOwogCiAgICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAnLicgJiYgIWlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnZScpICYmIG1fY3VycmVudCAhPSAn
bicpCi0gICAgICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBkZWNpbWFsVmFsdWUg
fTsKKyAgICAgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IHN0YXRpY19jYXN0PGRv
dWJsZT4oZGVjaW1hbFZhbHVlKSB9OwogCiAgICAgICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGln
aXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmNwcAppbmRl
eCA2MTY4ZmVlOTY2Y2I2NWM1NmNkNjY1NTU2NjZjZjU0YmZkYjcyOWJkLi4yN2QyYjdiNzQxYTdk
ZjVmYTY3ODlkNzJlODIyMWRmNDg4M2I3NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5jcHAKQEAgLTYxLDIxICs2MSwyMSBAQCBjb25zdCB1aW50
OF90KiBDYWNoZVBheWxvYWQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KG1fZGF0YSwKICAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRh
dGEpIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKCkpOwotICAgICAgICB9LAotICAgICAgICBbXShjb25zdCBzdGQ6OnBhaXI8TWFsbG9j
UHRyPHVpbnQ4X3QsIFZNTWFsbG9jPiwgc2l6ZV90PiYgZGF0YSkgeworICAgICAgICB9LCBbXShj
b25zdCBzdGQ6OnBhaXI8TWFsbG9jUHRyPHVpbnQ4X3QsIFZNTWFsbG9jPiwgc2l6ZV90PiYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZmlyc3QuZ2V0
KCk7Ci0gICAgICAgIH0pOworICAgICAgICB9CisgICAgKTsKIH0KIAogc2l6ZV90IENhY2hlUGF5
bG9hZDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9kYXRhLAot
ICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeworICAg
ICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gc2l6ZV90
IHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLnNpemUoKTsKLSAgICAgICAgfSwKLSAgICAgICAg
W10oY29uc3Qgc3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90LCBWTU1hbGxvYz4sIHNpemVfdD4m
IGRhdGEpIHsKKyAgICAgICAgfSwgW10oY29uc3Qgc3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90
LCBWTU1hbGxvYz4sIHNpemVfdD4mIGRhdGEpIC0+IHNpemVfdCB7CiAgICAgICAgICAgICByZXR1
cm4gZGF0YS5zZWNvbmQ7Ci0gICAgICAgIH0pOworICAgICAgICB9CisgICAgKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZVVwZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVVw
ZGF0ZS5jcHAKaW5kZXggNzBkMzZiMzg1YWI1YjJmODkwYTk2NzMwOWMzYzRhZDA3MTk3ZGRhMy4u
NjA3MTU0MzEwNWUzZDk0NTZkM2Q0Mjk4MWI4MzFkYWE3NjZlYzU0OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVVcGRhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlVXBkYXRlLmNwcApAQCAtMzksMTEgKzM5LDggQEAg
Q2FjaGVVcGRhdGU6OkNhY2hlVXBkYXRlKEZ1bmN0aW9uVXBkYXRlJiYgdXBkYXRlKQogfQogCiBD
YWNoZVVwZGF0ZTo6Q2FjaGVVcGRhdGUoQ2FjaGVVcGRhdGUmJiBvdGhlcikKKyAgICA6IG1fdXBk
YXRlKFdURk1vdmUob3RoZXIubV91cGRhdGUpKQogewotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEdsb2JhbFVwZGF0ZT4ob3RoZXIubV91cGRhdGUpKQotICAgICAgICBuZXcgKHRoaXMp
IENhY2hlVXBkYXRlKFdURk1vdmUoV1RGOjpnZXQ8R2xvYmFsVXBkYXRlPihvdGhlci5tX3VwZGF0
ZSkpKTsKLSAgICBlbHNlCi0gICAgICAgIG5ldyAodGhpcykgQ2FjaGVVcGRhdGUoV1RGTW92ZShX
VEY6OmdldDxGdW5jdGlvblVwZGF0ZT4ob3RoZXIubV91cGRhdGUpKSk7CiB9CiAKIENhY2hlVXBk
YXRlJiBDYWNoZVVwZGF0ZTo6b3BlcmF0b3I9KENhY2hlVXBkYXRlJiYgb3RoZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9MaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5oIGIvU291
cmNlL1dURi93dGYvTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQuaAppbmRleCAwMjEwZjk0
MjhlNmNlNDJmM2UyZGFmZDAyODA3MGMxZmNkYjk0Yzc3Li43NDQyYTQzMWEzODlkYWEyZDIwZjA1
MjY3Y2Q5MTRlYzBlMmVhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9MaWtlbHlEZW5z
ZVVuc2lnbmVkSW50ZWdlclNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xpa2VseURlbnNlVW5z
aWduZWRJbnRlZ2VyU2V0LmgKQEAgLTIwNSw4ICsyMDUsOCBAQCBwdWJsaWM6CiAgICAgICAgIElu
ZGV4VHlwZSBvcGVyYXRvciooKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihtX3VuZGVybHlpbmcsCi0gICAgICAgICAgICAgICAgWyZdKGNvbnN0IEJp
dFZlY3Rvcjo6aXRlcmF0b3ImIGl0KSB7IHJldHVybiAqaXQgKyBtX3NoaWZ0OyB9LAotICAgICAg
ICAgICAgICAgIFtdKGNvbnN0IHR5cGVuYW1lIFNldDo6aXRlcmF0b3ImIGl0KSB7IHJldHVybiAq
aXQ7IH0pOworICAgICAgICAgICAgICAgIFsmXShjb25zdCBCaXRWZWN0b3I6Oml0ZXJhdG9yJiBp
dCkgLT4gSW5kZXhUeXBlIHsgcmV0dXJuICppdCArIG1fc2hpZnQ7IH0sCisgICAgICAgICAgICAg
ICAgW10oY29uc3QgdHlwZW5hbWUgU2V0OjppdGVyYXRvciYgaXQpIC0+IEluZGV4VHlwZSB7IHJl
dHVybiAqaXQ7IH0pOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Zhcmlh
bnQuaCBiL1NvdXJjZS9XVEYvd3RmL1ZhcmlhbnQuaAppbmRleCAzY2E3ZWJmZTlkMDQ3OTZkMGI4
YTA1NjczY2NhMGZlMzE4ZTAyZDMyLi41MDNkOTE1ZmVhZTAxZDEzYTFiNTNmZGJmNDU4YmE2MGZk
OGIwNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgKKysrIGIvU291cmNl
L1dURi93dGYvVmFyaWFudC5oCkBAIC0yMzgsMTcgKzIzOCwxNyBAQCBjb25zdGV4cHIgY29uc3Qg
dHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LCBfVHlwZXMuLi4+OjpfX3R5cGUgJiYKIGdl
dChWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QgJiYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlw
ZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlw
ZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiYpOworY29uc3RleHByIHN0ZDo6YWRkX3BvaW50
ZXJfdDxfVHlwZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiopOwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50
ZXJfdDxfVHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYpOworY29u
c3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5
cGVzLi4uPiBjb25zdCopOwogCiB0ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4u
LiBfVHlwZXM+Ci1jb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PHR5cGVuYW1lIF9faW5kZXhl
ZF90eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4u
Lj4mKTsKK2NvbnN0ZXhwciBzdGQ6OmFkZF9wb2ludGVyX3Q8dHlwZW5hbWUgX19pbmRleGVkX3R5
cGU8X0luZGV4LCBfVHlwZXMuLi4+OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4q
KTsKIAogdGVtcGxhdGU8cHRyZGlmZl90IF9JbmRleCx0eXBlbmFtZSAuLi4gX1R5cGVzPgogY29u
c3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgs
X1R5cGVzLi4uPjo6X190eXBlIGNvbnN0PiBnZXRfaWYoCi0gICAgVmFyaWFudDxfVHlwZXMuLi4+
IGNvbnN0Jik7CisgICAgVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0Kik7CiAKIHRlbXBsYXRlPHB0
cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4KIHN0cnVjdCBfX3ZhcmlhbnRfYWNj
ZXNzb3I7CkBAIC0xODIyLDI2ICsxODIyLDI2IEBAIGNvbnN0ZXhwciBjb25zdCB0eXBlbmFtZSBf
X2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlJiYgZ2V0KFZhcmlhbnQ8CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+Ci1jb25zdGV4
cHIgc3RkOjphZGRfcG9pbnRlcl90PF9UeXBlPiBnZXRfaWYoVmFyaWFudDxfVHlwZXMuLi4+JiBf
X3YpewotICAgIHJldHVybiAoX190eXBlX2luZGV4PF9UeXBlLF9UeXBlcy4uLj46Ol9fdmFsdWUh
PV9fdi5pbmRleCgpKT9udWxscHRyOnN0ZDo6YWRkcmVzc29mKGdldDxfVHlwZT4oX192KSk7Citj
b25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PF9UeXBlPiBnZXRfaWYoVmFyaWFudDxfVHlwZXMu
Li4+KiBfX3YpIHsKKyAgICByZXR1cm4gKF9fdHlwZV9pbmRleDxfVHlwZSwgX1R5cGVzLi4uPjo6
X192YWx1ZSAhPSBfX3YtPmluZGV4KCkpID8gbnVsbHB0ciA6IHN0ZDo6YWRkcmVzc29mKGdldDxf
VHlwZT4oKl9fdikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4g
X1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZSBjb25zdD4gZ2V0X2lm
KFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYgX192KXsKLSAgICByZXR1cm4gKF9fdHlwZV9pbmRl
eDxfVHlwZSxfVHlwZXMuLi4+OjpfX3ZhbHVlIT1fX3YuaW5kZXgoKSk/bnVsbHB0cjpzdGQ6OmFk
ZHJlc3NvZihnZXQ8X1R5cGU+KF9fdikpOworY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxf
VHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCogX192KSB7CisgICAg
cmV0dXJuIChfX3R5cGVfaW5kZXg8X1R5cGUsIF9UeXBlcy4uLj46Ol9fdmFsdWUgIT0gX192LT5p
bmRleCgpKSA/IG51bGxwdHIgOiBzdGQ6OmFkZHJlc3NvZihnZXQ8X1R5cGU+KCpfX3YpKTsKIH0K
IAogdGVtcGxhdGU8cHRyZGlmZl90IF9JbmRleCx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3Rl
eHByIHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5
cGVzLi4uPjo6X190eXBlPiBnZXRfaWYoVmFyaWFudDxfVHlwZXMuLi4+JiBfX3YpewotICAgIHJl
dHVybiAoKF9JbmRleCE9X192LmluZGV4KCkpP251bGxwdHI6Ci0gICAgICAgIHN0ZDo6YWRkcmVz
c29mKF9fdmFyaWFudF9hY2Nlc3NvcjxfSW5kZXgsX1R5cGVzLi4uPjo6Z2V0KF9fdikpKTsKK2Nv
bnN0ZXhwciBzdGQ6OmFkZF9wb2ludGVyX3Q8dHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4
LCBfVHlwZXMuLi4+OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4qIF9fdikgewor
ICAgIHJldHVybiAoKF9JbmRleCAhPSBfX3YtPmluZGV4KCkpID8gbnVsbHB0ciA6CisgICAgICAg
IHN0ZDo6YWRkcmVzc29mKF9fdmFyaWFudF9hY2Nlc3NvcjxfSW5kZXgsIF9UeXBlcy4uLj46Omdl
dCgqX192KSkpOwogfQogCiB0ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBf
VHlwZXM+Ci1jb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PHR5cGVuYW1lIF9faW5kZXhlZF90
eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5cGUgY29uc3Q+IGdldF9pZigKLSAgICBWYXJpYW50
PF9UeXBlcy4uLj4gY29uc3QmIF9fdil7Ci0gICAgcmV0dXJuICgoX0luZGV4IT1fX3YuaW5kZXgo
KSk/bnVsbHB0cjoKLSAgICAgICAgc3RkOjphZGRyZXNzb2YoX192YXJpYW50X2FjY2Vzc29yPF9J
bmRleCxfVHlwZXMuLi4+OjpnZXQoX192KSkpOworY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJf
dDx0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsIF9UeXBlcy4uLj46Ol9fdHlwZSBjb25z
dD4gZ2V0X2lmKAorICAgIFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCogX192KSB7CisgICAgcmV0
dXJuICgoX0luZGV4ICE9IF9fdi0+aW5kZXgoKSkgPyBudWxscHRyIDoKKyAgICAgICAgc3RkOjph
ZGRyZXNzb2YoX192YXJpYW50X2FjY2Vzc29yPF9JbmRleCwgX1R5cGVzLi4uPjo6Z2V0KCpfX3Yp
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4
IGUxOTA0ZGJiNzZhZDIwMmNjNjNmNmEyNjdmODBlOTRlZTE5NjdiNjYuLjI1OTE0YjQwYmIyMzgz
YTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMjksMjIgKzEyOSwyMiBAQCBib29sIHF1
ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYg
dXJsLCBib29sIGhhc1ZhcgogCiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHks
IFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNl
Qm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwg
W10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXItPmNvcHkoKTsKLSAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKKyAg
ICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAg
IHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKIH0KIAog
UmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBm
b3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgeworICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwotICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeworICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90
JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNw
b25zZUJvZHkgeyB9OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBlZjZkYTA0OTg5OGViYWQ4MWU2Nzc1ODFmMGQx
MmJkMzM4ZjYxMjUzLi44ODRjOGI4NzgzOTE5OTBjMzc3NWMyMWM4M2MwMTExM2NjMDgxYTVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApA
QCAtMzg4LDkgKzM4OCw5IEBAIFJlc291cmNlRXJyb3IgRmV0Y2hCb2R5T3duZXI6OmxvYWRpbmdF
cnJvcigpIGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBGZXRjaEJvZHlPd25lcjo6
bG9hZGluZ0V4Y2VwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9s
b2FkaW5nRXJyb3IsIFtdKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9sb2FkaW5nRXJyb3IsIFtdKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSAtPiBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gewogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgVHlwZUVycm9yLCBlcnJvci5zYW5pdGl6ZWREZXNjcmlwdGlvbigpIH07Ci0gICAgfSwg
W10oY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pIHsKKyAgICB9LCBbXShjb25zdCBFeGNlcHRp
b24mIGV4Y2VwdGlvbikgLT4gc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IHsKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbiB9OwogICAgIH0sIFtdKGF1dG8mJikgLT4gc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+IHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggNTRl
NzhiYWNiZmI1OWE2YjRkNmFjYzNiM2RlYmRlOTdiYjhhMjZjNC4uOWFmZGQ5ZTBjMGJjY2MwNWVl
Y2NhYWQ1NDliMGE3Yzc1YzlkMGUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTIwNiw5ICsyMDYsOSBAQCB1aW50NjRfdCBJREJS
ZXF1ZXN0Ojpzb3VyY2VPYmplY3RTdG9yZUlkZW50aWZpZXIoKSBjb25zdAogICAgICAgICByZXR1
cm4gMDsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLnZhbHVlKCksCi0gICAg
ICAgIFtdIChjb25zdCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+JiBvYmplY3RTdG9yZSkgeyByZXR1
cm4gb2JqZWN0U3RvcmUtPmluZm8oKS5pZGVudGlmaWVyKCk7IH0sCi0gICAgICAgIFtdIChjb25z
dCBSZWZQdHI8SURCSW5kZXg+JiBpbmRleCkgeyByZXR1cm4gaW5kZXgtPmluZm8oKS5vYmplY3RT
dG9yZUlkZW50aWZpZXIoKTsgfSwKLSAgICAgICAgW10gKGNvbnN0IFJlZlB0cjxJREJDdXJzb3I+
JikgeyByZXR1cm4gMDsgfQorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiYgb2JqZWN0U3RvcmUpIC0+IHVpbnQ2NF90IHsgcmV0dXJuIG9iamVjdFN0b3JlLT5pbmZvKCku
aWRlbnRpZmllcigpOyB9LAorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPElEQkluZGV4PiYgaW5k
ZXgpIC0+IHVpbnQ2NF90IHsgcmV0dXJuIGluZGV4LT5pbmZvKCkub2JqZWN0U3RvcmVJZGVudGlm
aWVyKCk7IH0sCisgICAgICAgIFtdIChjb25zdCBSZWZQdHI8SURCQ3Vyc29yPiYpIC0+IHVpbnQ2
NF90IHsgcmV0dXJuIDA7IH0KICAgICApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAppbmRleCBk
MDljYjdkYTViYzg2Zjc5ZTMzZmU0OTE5ZjQ5N2QwZGRhZDdkZjYwLi5kMmFlMDA1MzBhMjQ1YTRk
MmIyYzU2NGMxOTY2NTU3YTg1MWVjZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKQEAgLTY4MSwx
MyArNjgxLDEzIEBAIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OnNob3dNZWRpYUNvbnRyb2xzQ29u
dGV4dE1lbnUoSFRNTEVsZW1lbnQmIHRhcmdldCwgU3RyaW5nCiAjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgICAgICAgICAgWyZdIChSZWZQdHI8QXVkaW9UcmFj
az4mIHNlbGVjdGVkQXVkaW9UcmFjaykgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdHJh
Y2sgOiBpZE1hcC52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYXVk
aW9UcmFjayA9IFdURjo6Z2V0X2lmPFJlZlB0cjxBdWRpb1RyYWNrPj4odHJhY2spKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoYXV0byogYXVkaW9UcmFjayA9IFdURjo6Z2V0X2lmPFJlZlB0cjxB
dWRpb1RyYWNrPj4oJnRyYWNrKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgqYXVkaW9UcmFj
ayktPnNldEVuYWJsZWQoKmF1ZGlvVHJhY2sgPT0gc2VsZWN0ZWRBdWRpb1RyYWNrKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgWyZdIChSZWZQdHI8VGV4
dFRyYWNrPiYgc2VsZWN0ZWRUZXh0VHJhY2spIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IHRyYWNrIDogaWRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IHRleHRUcmFjayA9IFdURjo6Z2V0X2lmPFJlZlB0cjxUZXh0VHJhY2s+Pih0cmFjaykpCisgICAg
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiB0ZXh0VHJhY2sgPSBXVEY6OmdldF9pZjxSZWZQdHI8
VGV4dFRyYWNrPj4oJnRyYWNrKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgqdGV4dFRyYWNr
KS0+c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50LnNldFNlbGVjdGVkVGV4dFRyYWNrKHNlbGVj
dGVkVGV4dFRyYWNrLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggM2M3NmM1N2E4YjczNWRi
MGU1YjE4OGNmMmU0NmZjZTJmOWE5ZTM1MS4uZmUxYTAxZWRjZGY5ZDgwYWUwZTUyNzgyOGNjNjkx
YmQyOTIzNTQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJU
Q1BlZXJDb25uZWN0aW9uOjphZGRJY2VDYW5kaWRhdGUoQ2FuZGlkYXRlJiYgcnRjQ2FuZGlkYXRl
LCBSZWY8RGVmZXJyZWRQcgogICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBleGNlcHRpb247
CiAgICAgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4gY2FuZGlkYXRlOwogICAgIGlmIChydGNDYW5k
aWRhdGUpIHsKLSAgICAgICAgY2FuZGlkYXRlID0gc3dpdGNoT24oKnJ0Y0NhbmRpZGF0ZSwgWyZl
eGNlcHRpb25dKFJUQ0ljZUNhbmRpZGF0ZUluaXQmIGluaXQpIC0+IFJlZlB0cjxSVENJY2VDYW5k
aWRhdGU+IHsKKyAgICAgICAgY2FuZGlkYXRlID0gV1RGOjpzd2l0Y2hPbigqcnRjQ2FuZGlkYXRl
LCBbJmV4Y2VwdGlvbl0oUlRDSWNlQ2FuZGlkYXRlSW5pdCYgaW5pdCkgLT4gUmVmUHRyPFJUQ0lj
ZUNhbmRpZGF0ZT4gewogICAgICAgICAgICAgaWYgKGluaXQuY2FuZGlkYXRlLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCmluZGV4IGRhZjg5
N2VhNDcyMTg2ZDZjYzdiN2FkNjIyZGZmNjZmYTYxNzc1NmIuLjAxZjBlMDFjYmQ0NWNjNjIyNzU1
MTRiMDZhZjMzZTk5ZDI2MDI3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgUlRD
UnRwVHJhbnNmb3JtOjp+UlRDUnRwVHJhbnNmb3JtKCkKIAogYm9vbCBSVENSdHBUcmFuc2Zvcm06
OmlzQXR0YWNoZWQoKSBjb25zdAogewotICAgIHJldHVybiBzd2l0Y2hPbihtX3RyYW5zZm9ybSwg
WyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0p
IHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0
cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKICAgICAgICAgcmV0
dXJuIHNmcmFtZVRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpOwogICAgIH0sIFsmXShjb25zdCBSZWZQ
dHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CiAgICAgICAgIHJl
dHVybiBzY3JpcHRUcmFuc2Zvcm0tPmlzQXR0YWNoZWQoKTsKQEAgLTEzMSwxNCArMTMxLDE0IEBA
IHZvaWQgUlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVyKFJUQ1J0cFNlbmRlciYpCiAK
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mIGEsIGNvbnN0IFJUQ1J0cFRy
YW5zZm9ybSYgYikKIHsKLSAgICByZXR1cm4gc3dpdGNoT24oYS5tX3RyYW5zZm9ybSwgWyZdKGNv
bnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm1BKSB7Ci0g
ICAgICAgIHJldHVybiBzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybUIpIHsKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihhLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybUEpIHsKKyAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+
JiBzZnJhbWVUcmFuc2Zvcm1CKSB7CiAgICAgICAgICAgICByZXR1cm4gc2ZyYW1lVHJhbnNmb3Jt
QS5nZXQoKSA9PSBzZnJhbWVUcmFuc2Zvcm1CLmdldCgpOwogICAgICAgICB9LCBbJl0oY29uc3Qg
UmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0pOwogICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJh
bnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtQSkgewotICAgICAgICByZXR1cm4gc3dpdGNoT24oYi5t
X3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+Jikgewor
ICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVm
UHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2Ny
aXB0VHJhbnNmb3JtQikgewogICAgICAgICAgICAgcmV0dXJuIHNjcmlwdFRyYW5zZm9ybUEuZ2V0
KCkgPT0gc2NyaXB0VHJhbnNmb3JtQi5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKaW5kZXggZDAwNzE4MmFlMTc2MjQwMTQ1YmY0ZjIxMGRj
MmQ4ZjlmYWUxMTkzYS4uYzk5OTIyMDNhNWJkNWQxNzkyOTlhZjg3Njk1ODVhMmUyMTYyZWVmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAg
LTU5LDE3ICs1OSw2IEBAIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6On5MaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kKCkKICAgICBzdG9wU291cmNlKCk7CiB9CiAKLXN0YXRpYyBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6U291cmNlJiBhLCBjb25zdCBM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpTb3VyY2UmIGIpCi17Ci0gICAgcmV0dXJuIHN3aXRj
aE9uKGEsIFsmYl0oY29uc3QgUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4mIHNvdXJj
ZSkgewotICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlPj4oYikgJiYgc291cmNlLnB0cigpID09IFdURjo6Z2V0PFJlZjxS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+PihiKS5wdHIoKTsKLSAgICB9LCBbJmJdKGNvbnN0
IFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAgcmV0
dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZT4+KGIpICYmIHNvdXJjZS5wdHIoKSA9PSBXVEY6OmdldDxSZWY8UmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlPj4oYikucHRyKCk7Ci0gICAgfSwgWyZiXShzdGQ6Om51bGxwdHJfdCkgewotICAg
ICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJfdD4oYik7Ci0g
ICAgfSk7Ci19Ci0KIHZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c3RhcnRTb3VyY2Uo
KQogewogICAgIC8vIFdlIGFzeW5jaHJvbm91c2x5IHN0YXJ0IHRoZSBzb3VyY2VzIHRvIGd1YXJh
bnRlZSBtZWRpYSBnb2VzIHRocm91Z2ggdGhlIHRyYW5zZm9ybSBpZiBhIHRyYW5zZm9ybSBpcyBz
ZXQgd2hlbiBjcmVhdGluZyB0aGUgdHJhY2suCkBAIC0xODQsNyArMTczLDcgQEAgdm9pZCBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc3RyZWFtSWQKIAogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKiBMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjp2aWRlb1NvdXJjZSgpCiB7Ci0gICAgcmV0dXJuIHN3aXRjaE9uKG1f
c291cmNlLAorICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLAogICAgICAgICBbXShS
ZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiYgc291cmNlKSB7IHJldHVybiBzb3VyY2Uu
cHRyKCk7IH0sCiAgICAgICAgIFtdKGNvbnN0IGF1dG8mKSAtPiBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UqIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICApOwpAQCAtMTkyLDcgKzE4MSw3IEBA
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6
dmlkZW9Tb3VyY2UoKQogCiBib29sIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6Omhhc1NvdXJj
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXRjaE9uKG1fc291cmNlLAorICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fc291cmNlLAogICAgICAgICBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYp
IHsgcmV0dXJuIGZhbHNlOyB9LAogICAgICAgICBbXShjb25zdCBhdXRvJikgeyByZXR1cm4gdHJ1
ZTsgfQogICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNw
cAppbmRleCA3ZTdmNjlkYzVhODU2OWI0NjM3NDFlNjcwNGQ1YWU2NjAwM2FlODU1Li5jZDcxYjM5
MTE1Nzg1NTliOWFmYmQ0MzgzODQ2MjEyNDNiZDU5MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9zZShjb25z
dCBEb2N1bWVudCYgZAogICAgICAgICBhdXRvIHRyYW5zZm9ybSA9IFdlYlhSUmlnaWRUcmFuc2Zv
cm06OmNyZWF0ZShwb3NlLT50cmFuc2Zvcm0oKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldCk7CiAK
ICAgICAgICAgLy8gU2V0IHByb2plY3Rpb24gbWF0cml4IGZvciBlYWNoIHZpZXcKLSAgICAgICAg
c3RkOjphcnJheTxmbG9hdCwgMTY+IHByb2plY3Rpb24gPSBzd2l0Y2hPbihmcmFtZURhdGEudmll
d3NbaW5kZXhdLnByb2plY3Rpb24sIFsmXShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6Rm92JiBmb3YpIHsKKyAgICAgICAgc3RkOjphcnJheTxmbG9hdCwgMTY+IHByb2plY3Rp
b24gPSBXVEY6OnN3aXRjaE9uKGZyYW1lRGF0YS52aWV3c1tpbmRleF0ucHJvamVjdGlvbiwgWyZd
KGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3YmIGZvdikgewogICAgICAg
ICAgICAgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7
CiAgICAgICAgICAgICBkb3VibGUgZmFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRo
RmFyKCk7CiAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9q
ZWN0aW9uKGZvdi51cCwgZm92LmRvd24sIGZvdi5sZWZ0LCBmb3YucmlnaHQsIG5lYXIsIGZhciku
dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJXZWJHTExheWVyLmNwcAppbmRleCA3OGIxNWNiOGIwN2IyYzBlM2MxMGQ4MWM3
NTdiZWFjNzZjMTUzMDczLi5mM2FiN2UxYjE5M2FiN2E4ZTg4N2FhNmRhMWU1YWU0YjZkNzU5ZDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIu
Y3BwCkBAIC0yNzMsNyArMjczLDcgQEAgSFRNTENhbnZhc0VsZW1lbnQqIFdlYlhSV2ViR0xMYXll
cjo6Y2FudmFzKCkgY29uc3QKICAgICAgICAgYXV0byBjYW52YXMgPSBiYXNlQ29udGV4dC0+Y2Fu
dmFzKCk7CiAgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNhbnZhcywgW10oY29uc3QgUmVm
UHRyPEhUTUxDYW52YXNFbGVtZW50PiYgY2FudmFzKSB7CiAgICAgICAgICAgICByZXR1cm4gY2Fu
dmFzLmdldCgpOwotICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPikg
eworICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPikgLT4gSFRNTENh
bnZhc0VsZW1lbnQqIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgiYmFzZUxheWVy
IG9mIGEgV2ViWFJXZWJHTExheWVyIG11c3QgYmUgYW4gSFRNTENhbnZhc0VsZW1lbnQiKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5jcHAKaW5kZXggZWJhNTE5MjcyNjJkY2I0NTNjYzIzNDg4MGIzN2U5Nzk0MDE2ZmZjMC4u
YzcxNmIzYjdmZTFlYjJkYzM0OTRiNjU5N2I1NzMwYzFjNDgwYTUzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5jcHAKQEAgLTc4MSw3ICs3ODEsNyBAQCBJbnRQb2ludCBBWElzb2xhdGVkT2Jq
ZWN0OjppbnRQb2ludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
YwogewogICAgIGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAgICAgICBbXSAoSW50UG9pbnQmIHR5
cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChJbnRQb2ludCYg
dHlwZWRWYWx1ZSkgLT4gSW50UG9pbnQgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKICAgICAgICAg
W10gKGF1dG8mKSB7IHJldHVybiBJbnRQb2ludCgpOyB9CiAgICAgKTsKIH0KQEAgLTc5MCw3ICs3
OTAsNyBAQCBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6Om9iamVjdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogewogICAgIGF1dG8gdmFsdWUgPSBtX3By
b3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIEFYSUQgbm9kZUlEID0gV1RGOjpzd2l0
Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKEFYSUQmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWU7IH0sCisgICAgICAgIFtdIChBWElEJiB0eXBlZFZhbHVlKSAtPiBBWElEIHsgcmV0dXJu
IHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gSW52YWxpZEFYSUQ7
IH0KICAgICApOwogCkBAIC04MDIsNyArODAyLDcgQEAgVCBBWElzb2xhdGVkT2JqZWN0OjpyZWN0
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAg
IGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAgICAgICBbXSAoVCYgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKFQmIHR5cGVkVmFsdWUpIC0+IFQgeyByZXR1
cm4gdHlwZWRWYWx1ZTsgfSwKICAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBUIHsgfTsgfQog
ICAgICk7CiB9CkBAIC04MTIsNyArODEyLDcgQEAgVmVjdG9yPFQ+IEFYSXNvbGF0ZWRPYmplY3Q6
OnZlY3RvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY28KIHsK
ICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKFZlY3RvcjxUPiYgdHlwZWRW
YWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKFZlY3RvcjxUPiYgdHlw
ZWRWYWx1ZSkgLT4gVmVjdG9yPFQ+IHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtd
IChhdXRvJikgeyByZXR1cm4gVmVjdG9yPFQ+KCk7IH0KICAgICApOwogfQpAQCAtODIyLDcgKzgy
Miw3IEBAIE9wdGlvblNldDxUPiBBWElzb2xhdGVkT2JqZWN0OjpvcHRpb25TZXRBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJv
cGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFs
dWUsCi0gICAgICAgIFtdIChUJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAor
ICAgICAgICBbXSAoVCYgdHlwZWRWYWx1ZSkgLT4gT3B0aW9uU2V0PFQ+IHsgcmV0dXJuIHR5cGVk
VmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gT3B0aW9uU2V0PFQ+KCk7IH0K
ICAgICApOwogfQpAQCAtODMyLDcgKzgzMiw3IEBAIHN0ZDo6cGFpcjxULCBUPiBBWElzb2xhdGVk
T2JqZWN0OjpwYWlyQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiB7
CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtdIChzdGQ6OnBhaXI8VCwgVD4m
IHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChzdGQ6OnBh
aXI8VCwgVD4mIHR5cGVkVmFsdWUpIC0+IHN0ZDo6cGFpcjxULCBUPiB7IHJldHVybiB0eXBlZFZh
bHVlOyB9LAogICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIHN0ZDo6cGFpcjxULCBUPigwLCAx
KTsgfQogICAgICk7CiB9CkBAIC04NDEsOCArODQxLDggQEAgdWludDY0X3QgQVhJc29sYXRlZE9i
amVjdDo6dWludDY0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBj
b24KIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKHVpbnQ2NF90JiB0
eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAotICAgICAgICBbXSAoYXV0byYpIHsg
cmV0dXJuIDA7IH0KKyAgICAgICAgW10gKHVpbnQ2NF90JiB0eXBlZFZhbHVlKSAtPiB1aW50NjRf
dCB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoYXV0byYpIC0+IHVpbnQ2NF90
IHsgcmV0dXJuIDA7IH0KICAgICApOwogfQogCkBAIC04NTAsNyArODUwLDcgQEAgVVJMIEFYSXNv
bGF0ZWRPYmplY3Q6OnVybEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVydHlO
YW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKFVSTCYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKFVSTCYgdHlw
ZWRWYWx1ZSkgLT4gVVJMIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRv
JikgeyByZXR1cm4gVVJMKCk7IH0KICAgICApOwogfQpAQCAtODU5LDcgKzg1OSw3IEBAIFBhdGgg
QVhJc29sYXRlZE9iamVjdDo6cGF0aEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJv
cGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10g
KFBhdGgmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChQ
YXRoJiB0eXBlZFZhbHVlKSAtPiBQYXRoIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAg
IFtdIChhdXRvJikgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgKTsKIH0KQEAgLTg2OCw3ICs4Njgs
NyBAQCBDb2xvciBBWElzb2xhdGVkT2JqZWN0Ojpjb2xvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0
eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwK
LSAgICAgICAgW10gKENvbG9yJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAor
ICAgICAgICBbXSAoQ29sb3ImIHR5cGVkVmFsdWUpIC0+IENvbG9yIHsgcmV0dXJuIHR5cGVkVmFs
dWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gQ29sb3IoKTsgfQogICAgICk7CiB9
CkBAIC04NzcsOCArODc3LDggQEAgZmxvYXQgQVhJc29sYXRlZE9iamVjdDo6ZmxvYXRBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2
YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtdIChmbG9hdCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4g
dHlwZWRWYWx1ZTsgfSwKLSAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwOyB9CisgICAgICAg
IFtdIChmbG9hdCYgdHlwZWRWYWx1ZSkgLT4gZmxvYXQgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwK
KyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwLjBmOyB9CiAgICAgKTsKIH0KIApAQCAtODg2
LDggKzg4Niw4IEBAIGRvdWJsZSBBWElzb2xhdGVkT2JqZWN0Ojpkb3VibGVBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9
IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24odmFsdWUsCi0gICAgICAgIFtdIChkb3VibGUmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWU7IH0sCi0gICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gMDsgfQorICAgICAgICBbXSAo
ZG91YmxlJiB0eXBlZFZhbHVlKSAtPiBkb3VibGUgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAg
ICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwLjA7IH0KICAgICApOwogfQogCkBAIC04OTUsOCAr
ODk1LDggQEAgdW5zaWduZWQgQVhJc29sYXRlZE9iamVjdDo6dW5zaWduZWRBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGMKIHsKICAgICBhdXRvIHZhbHVlID0gbV9w
cm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2
YWx1ZSwKLSAgICAgICAgW10gKHVuc2lnbmVkJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZh
bHVlOyB9LAotICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgW10gKHVu
c2lnbmVkJiB0eXBlZFZhbHVlKSAtPiB1bnNpZ25lZCB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAor
ICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIDB1OyB9CiAgICAgKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKaW5kZXggNTc0NWUyYTRmZTc5NzBjZTRkZjM1MTJmMGEwNjgyOGUw
NjBkM2FiYy4uYzhiNzU3YzlmYzZhNTI0ZmYxNmNmNjBjYzY2ZWU5MGFhMGFjNTA0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3Rm
L0JyaWdhbmQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xBbnkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydFdlYkdMLmNwcAppbmRleCBkZDI5Njg4YzJiYzZjODgwMDU0ZTE4N2YxZDMwOWFh
ODkwNjJlODg2Li45MjJhYTcxMzdmOTQ1MjI0MDBiYTkwY2Q5N2U3ZTg1ZjUyOWFlYjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCkBA
IC04MCw0OSArODAsMzkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpTVmFsdWUgY29udmVydFRv
SlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgV2ViR0xBbnkmIGFueSkKIHsKICAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihhbnksCi0gICAgICAgIFtdIChzdGQ6Om51bGxwdHJfdCkgeworICAgICAg
ICBbXSAoc3RkOjpudWxscHRyX3QpIC0+IEpTVmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOwotICAgICAgICB9LAotICAgICAgICBbXSAoYm9vbCB2YWx1ZSkgeworICAgICAgICB9
LCBbXSAoYm9vbCB2YWx1ZSkgLT4gSlNWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4ganNCb29s
ZWFuKHZhbHVlKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10gKGludCB2YWx1ZSkgeworICAgICAg
ICB9LCBbXSAoaW50IHZhbHVlKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgICAgIHJldHVybiBqc051
bWJlcih2YWx1ZSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdICh1bnNpZ25lZCB2YWx1ZSkgewor
ICAgICAgICB9LCBbXSAodW5zaWduZWQgdmFsdWUpIC0+IEpTVmFsdWUgewogICAgICAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10gKGxvbmcgbG9u
ZyB2YWx1ZSkgeworICAgICAgICB9LCBbXSAobG9uZyBsb25nIHZhbHVlKSAtPiBKU1ZhbHVlIHsK
ICAgICAgICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7Ci0gICAgICAgIH0sCi0gICAgICAg
IFtdIChmbG9hdCB2YWx1ZSkgeworICAgICAgICB9LCBbXSAoZmxvYXQgdmFsdWUpIC0+IEpTVmFs
dWUgewogICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgfSwKLSAg
ICAgICAgWyZdIChjb25zdCBTdHJpbmcmIHZhbHVlKSB7CisgICAgICAgIH0sIFsmXSAoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgLT4gSlNWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmdX
aXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCB2YWx1ZSk7Ci0gICAgICAgIH0sCi0g
ICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGJvb2w+JiB2YWx1ZXMpIHsKKyAgICAgICAgfSwgWyZd
IChjb25zdCBWZWN0b3I8Ym9vbD4mIHZhbHVlcykgLT4gSlNWYWx1ZSB7CiAgICAgICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwogICAgICAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6
IHZhbHVlcykKICAgICAgICAgICAgICAgICBsaXN0LmFwcGVuZChqc0Jvb2xlYW4odmFsdWUpKTsK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsaXN0Lmhhc092ZXJmbG93ZWQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoJmdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
SlNDOjpBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIGxpc3QpOwotICAgICAgICB9
LAotICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxpbnQ+JiB2YWx1ZXMpIHsKKyAgICAgICAgfSwg
WyZdIChjb25zdCBWZWN0b3I8aW50PiYgdmFsdWVzKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHZhbHVl
IDogdmFsdWVzKQogICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzTnVtYmVyKHZhbHVlKSk7
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbGlzdC5oYXNPdmVyZmxvd2VkKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KCZnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0
PEpTQzo6QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBsaXN0KTsKLSAgICAgICAg
fSwKLSAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiB2YWx1ZXMpIHsKKyAgICAg
ICAgfSwgWyZdIChjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiB2YWx1ZXMpIC0+IEpTVmFsdWUgewog
ICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAgICAgICAgICAgIGZvciAo
YXV0byYgdmFsdWUgOiB2YWx1ZXMpCiAgICAgICAgICAgICAgICAgbGlzdC5hcHBlbmQoanNOdW1i
ZXIodmFsdWUpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsaXN0Lmhhc092ZXJmbG93
ZWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoJmdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8SlNDOjpBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIGxpc3Qp
OwotICAgICAgICB9LAotICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBh
cnJheSkgeworICAgICAgICB9LCBbJl0gKGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBhcnJh
eSkgewogICAgICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9i
YWxPYmplY3QsIGFycmF5LmdldCgpKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBS
ZWZQdHI8SW50MzJBcnJheT4mIGFycmF5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHAK
aW5kZXggMGJkMWQ0ZDFhZDg1NTJlZDc0M2JjYWIyZTFiOGYyYTMwZDYwNTlmMC4uZWFiZWJiMzI4
MWFlZTNlZDliMGNhYTdhYmRkMmVkMDU2YTNkYzE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50Q3Vz
dG9tLmNwcApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU0M6OkpTVmFs
dWUgSlNQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Om1ldGhvZERldGFpbHMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gY2FjaGVk
UHJvcGVydHlWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpcywgd3JhcHBlZCgpLmNhY2hl
ZE1ldGhvZERldGFpbHMoKSwgW3RoaXMsICZsZXhpY2FsR2xvYmFsT2JqZWN0XSB7Ci0gICAgICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKHdyYXBwZWQoKS5tZXRob2REZXRhaWxzKCksIFtdKEpTQzo6
SlNWYWx1ZSBtZXRob2REZXRhaWxzKSB7CisgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHdy
YXBwZWQoKS5tZXRob2REZXRhaWxzKCksIFtdKEpTQzo6SlNWYWx1ZSBtZXRob2REZXRhaWxzKSAt
PiBKU0M6OkpTVmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIG1ldGhvZERldGFpbHMgPyBtZXRo
b2REZXRhaWxzIDogSlNDOjpqc051bGwoKTsKLSAgICAgICAgfSwgWyZsZXhpY2FsR2xvYmFsT2Jq
ZWN0XShjb25zdCBQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Ok1ldGhvZERldGFpbHNGdW5jdGlv
biYgZnVuY3Rpb24pIHsKKyAgICAgICAgfSwgWyZsZXhpY2FsR2xvYmFsT2JqZWN0XShjb25zdCBQ
YXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Ok1ldGhvZERldGFpbHNGdW5jdGlvbiYgZnVuY3Rpb24p
IC0+IEpTQzo6SlNWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24obGV4aWNhbEds
b2JhbE9iamVjdCkuZ2V0KCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oCmluZGV4IGQ3ZTUy
YjFiMWQxNmQyY2IxNzIyOTQzYTJiNmUwOGRhNTI0M2QzM2YuLmU0Y2NkYmE2MmQ4NDgzYTc0MGNh
N2EwNDNkMmJhZWM5Y2M1MTZhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmFsdWVJbldyYXBwZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgKQEAgLTgyLDcgKzgyLDcgQEAgaW5saW5lIEpT
VmFsdWVJbldyYXBwZWRPYmplY3Q6Om9wZXJhdG9yIEpTQzo6SlNWYWx1ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV92YWx1ZSwgW10gKEpTQzo6SlNWYWx1ZSB2YWx1ZSkg
ewogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfSwgW10gKGNvbnN0IFdlYWsmIHZhbHVlKSB7
CisgICAgfSwgW10gKGNvbnN0IFdlYWsmIHZhbHVlKSAtPiBKU0M6OkpTVmFsdWUgewogICAgICAg
ICByZXR1cm4gdmFsdWUuZ2V0KCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ0ZWI4MTYyZWU1MGFmZGFmZjNj
NDk0OWJhZjE3YWEwMzZkMmRmNGYuLmFlYTFiOTMyYmNjMjA3YWY1NzAxYjlhOTFmYWQ0MDViM2Y5
MDg5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCkBAIC05MTgsNyArOTE4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gY29uc3VtZUZvbnRWYXJpYW50Q1NTMjEoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmEKIHN0YXRp
YyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVGb250V2VpZ2h0KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVGb250V2Vp
Z2h0UmF3KHJhbmdlKSkgewotICAgICAgICByZXR1cm4gc3dpdGNoT24oKnJlc3VsdCwgW10gKENT
U1ZhbHVlSUQgdmFsdWVJRCkgeworICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbigqcmVzdWx0
LCBbXSAoQ1NTVmFsdWVJRCB2YWx1ZUlEKSB7CiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWVJRCk7CiAgICAgICAg
IH0sIFtdIChkb3VibGUgd2VpZ2h0TnVtYmVyKSB7CiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh3ZWlnaHROdW1iZXIsIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggMzJjZmQw
ZDY3ZjM4NGIwN2FlM2Y3MGFmN2NjNmU1YjVkNTEwMWI0Yy4uZTRmMTk0YmZhMmIyZjI4OWEyZjhk
MzNkMTI5MTcyMzM3N2VlZGNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAg
LTEyOSwxNSArMTI5LDE1IEBAIEV2ZW50SW50ZXJmYWNlIE1lc3NhZ2VFdmVudDo6ZXZlbnRJbnRl
cmZhY2UoKSBjb25zdAogCiBzaXplX3QgTWVzc2FnZUV2ZW50OjptZW1vcnlDb3N0KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2RhdGEsIFtdIChjb25zdCBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0JikgeworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fZGF0YSwgW10gKGNv
bnN0IEpTVmFsdWVJbldyYXBwZWRPYmplY3QmKSAtPiBzaXplX3QgewogICAgICAgICByZXR1cm4g
MDsKLSAgICB9LCBbXSAoY29uc3QgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIGRhdGEpIHsK
KyAgICB9LCBbXSAoY29uc3QgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIGRhdGEpIC0+IHNp
emVfdCB7CiAgICAgICAgIHJldHVybiBkYXRhLT5tZW1vcnlDb3N0KCk7Ci0gICAgfSwgW10gKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7CisgICAgfSwgW10gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAt
PiBzaXplX3QgewogICAgICAgICByZXR1cm4gc3RyaW5nLnNpemVJbkJ5dGVzKCk7Ci0gICAgfSwg
W10gKGNvbnN0IFJlZjxCbG9iPiYgYmxvYikgeworICAgIH0sIFtdIChjb25zdCBSZWY8QmxvYj4m
IGJsb2IpIC0+IHNpemVfdCB7CiAgICAgICAgIHJldHVybiBibG9iLT5zaXplKCk7Ci0gICAgfSwg
W10gKGNvbnN0IFJlZjxBcnJheUJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFtdIChjb25zdCBS
ZWY8QXJyYXlCdWZmZXI+JiBidWZmZXIpIC0+IHNpemVfdCB7CiAgICAgICAgIHJldHVybiBidWZm
ZXItPmJ5dGVMZW5ndGgoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApp
bmRleCA1NjU3ODI3ZDlhNjZiYjNiNzNlZmI1NWY5MzE2MWVlODM4YjQ1YTMwLi5mMTRlOTNiZjZi
NzViMDFkNTliMWY0MjVjZWVlYTBjYjZlZTk4MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC0yMjczLDcgKzIyNzMsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAKICAgICBpZiAodW5pZmllZFRleHRD
aGVja2VyRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gZm91bmRJdGVtID0gVGV4dENoZWNraW5n
SGVscGVyKCpjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxl
ZFdvcmRPclVuZ3JhbW1hdGljYWxQaHJhc2UoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpOwot
ICAgICAgICBpZiAoYXV0byB3b3JkID0gV1RGOjpnZXRfaWY8VGV4dENoZWNraW5nSGVscGVyOjpN
aXNzcGVsbGVkV29yZD4oZm91bmRJdGVtKSkKKyAgICAgICAgaWYgKGF1dG8qIHdvcmQgPSBXVEY6
OmdldF9pZjxUZXh0Q2hlY2tpbmdIZWxwZXI6Ok1pc3NwZWxsZWRXb3JkPigmZm91bmRJdGVtKSkK
ICAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gV1RGTW92ZSgqd29yZCk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHVuZ3JhbW1hdGljYWxQaHJhc2UgPSBXVEY6OmdldDxUZXh0Q2hlY2tp
bmdIZWxwZXI6OlVuZ3JhbW1hdGljYWxQaHJhc2U+KFdURk1vdmUoZm91bmRJdGVtKSk7CkBAIC0y
MzAwLDcgKzIzMDAsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIAogICAgICAgICBpZiAodW5pZmllZFRl
eHRDaGVja2VyRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBhdXRvIGZvdW5kSXRlbSA9IFRleHRD
aGVja2luZ0hlbHBlcigqY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1p
c3NwZWxsZWRXb3JkT3JVbmdyYW1tYXRpY2FsUGhyYXNlKGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHdvcmQgPSBXVEY6OmdldF9pZjxUZXh0Q2hlY2tp
bmdIZWxwZXI6Ok1pc3NwZWxsZWRXb3JkPihmb3VuZEl0ZW0pKQorICAgICAgICAgICAgaWYgKGF1
dG8qIHdvcmQgPSBXVEY6OmdldF9pZjxUZXh0Q2hlY2tpbmdIZWxwZXI6Ok1pc3NwZWxsZWRXb3Jk
PigmZm91bmRJdGVtKSkKICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IFdURk1vdmUo
KndvcmQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHVuZ3JhbW1hdGljYWxQ
aHJhc2UgPSBXVEY6OmdldDxUZXh0Q2hlY2tpbmdIZWxwZXI6OlVuZ3JhbW1hdGljYWxQaHJhc2U+
KFdURk1vdmUoZm91bmRJdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGZjOWQ3MTU1NDM3M2ZkYzc4NWRj
YTQ2Y2ZkNWVkZjhhZjJhNTM1MjcuLmMzNzJhZWNlZjRlOTdmYjNiMWMxM2ZlZWJhYTVkNzRmMTg5
ZGNlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogaW5saW5lIGJvb2wgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6
Om1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXRj
aE9uKHJ1bGUsIFsmZWxlbWVudF0gKEVsZW1lbnRSdWxlIHJ1bGUpIHsKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihydWxlLCBbJmVsZW1lbnRdIChFbGVtZW50UnVsZSBydWxlKSB7CiAgICAgICAg
IHJldHVybiBydWxlLmxvY2FsTmFtZSA9PSBlbGVtZW50LmxvY2FsTmFtZSgpOwogICAgIH0sIFsm
ZWxlbWVudF0gKEF0dHJpYnV0ZVJ1bGUgcnVsZSkgewogICAgICAgICByZXR1cm4gZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShlbGVtZW50LmdldEF0dHJpYnV0ZShydWxlLm5hbWUpLCBydWxlLnZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCBiMDdiNzgwOGRm
YWQ1OWMzZDU0MDlmNTcyMDJhN2IxMjkxODIyYjJmLi4zNGY1YzkxNTlhYmRjM2M1ZmY3MjIwOGZm
Mzc1MWQxYTc3MjMxNTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJj
aFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3Bw
CkBAIC01MSw5ICs1MSw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiBVUkxT
ZWFyY2hQYXJhbXM6OmNyZWF0ZShWYXJpYW50PFZlY3RvcjxWZWN0b3I8CiAgICAgICAgICAgICBw
YWlycy5hcHBlbmQoe3BhaXJbMF0sIHBhaXJbMV19KTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMoV1RGTW92ZShwYWlycykpKTsKLSAgICB9
LCBbJl0oY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4mIHBh
aXJzKSB7CisgICAgfSwgWyZdKGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcs
IFN0cmluZz4+JiBwYWlycykgLT4gRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMU2VhcmNoUGFyYW1zKHBhaXJzKSk7Ci0g
ICAgfSwgWyZdKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CisgICAgfSwgWyZdKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSAtPiBFeGNlcHRpb25PcjxSZWY8VVJMU2VhcmNoUGFyYW1zPj4gewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMoc3RyaW5nLCBudWxscHRyKSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgdmFyaWFudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGUyOTk2Y2I5
MjVjYzVlYTRkM2UyOGQxYzVkOTU2MzA1ZjIwZGVlNWYuLmY4MzFjNmRkYjU3ZjI1MWEzY2ZjN2Zj
MzcyNWU3MDc3YWMwYjkzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgSW5zcGVjdG9yQ2FudmFzOjpJbnNwZWN0
b3JDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIAogQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXNDb250ZXh0KCkgY29uc3QKIHsKLSAg
ICBpZiAoYXV0byogY29udGV4dFdyYXBwZXIgPSBXVEY6OmdldF9pZjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+PihtX2NvbnRleHQpKQorICAgIGlmIChhdXRv
KiBjb250ZXh0V3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dD4+KCZtX2NvbnRleHQpKQogICAgICAgICByZXR1cm4gJmNvbnRl
eHRXcmFwcGVyLT5nZXQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTEyNCw4ICsxMjQs
NyBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50KCkg
Y29uc3QKICAgICAgICAgICAgIGlmIChpczxIVE1MQ2FudmFzRWxlbWVudD4oY29udGV4dC5jYW52
YXNCYXNlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KGNvbnRleHQuY2FudmFzQmFzZSgpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICB9LAotICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CisgICAgICAgIH0sIFtdIChN
b25vc3RhdGUpIC0+IEhUTUxDYW52YXNFbGVtZW50KiB7CiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CkBAIC0x
MzksOCArMTM4LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSW5zcGVjdG9yQ2FudmFzOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAgW10gKHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4gY29udGV4dFdyYXBwZXIpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNvbnRleHQgPSBjb250ZXh0V3JhcHBlci5nZXQoKTsKICAgICAgICAgICAg
IHJldHVybiBjb250ZXh0LmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIFtdIChNb25vc3RhdGUpIHsKKyAgICAgICAgfSwgW10gKE1vbm9z
dGF0ZSkgLT4gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogewogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAt
ODkzLDggKzg5MSw3IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFzOjpDYW52YXM+IEluc3BlY3RvckNh
bnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0dXJlCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFByb3RvY29sOjpDYW52YXM6OkNvbnRleHRUeXBlOjpXZWJHTDI7CiAjZW5kaWYKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIChN
b25vc3RhdGUpIHsKKyAgICAgICAgfSwgW10gKE1vbm9zdGF0ZSkgLT4gQ29udGV4dFR5cGVUeXBl
IHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQpAQCAtOTIwLDggKzkxNyw3IEBAIFJlZjxQcm90b2Nv
bDo6Q2FudmFzOjpDYW52YXM+IEluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMo
Ym9vbCBjYXB0dXJlCiAgICAgYXV0byBjb250ZXh0QXR0cmlidXRlcyA9IFdURjo6c3dpdGNoT24o
bV9jb250ZXh0LAogICAgICAgICBbXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYW52YXNSZW5k
ZXJpbmdDb250ZXh0PiBjb250ZXh0V3JhcHBlcikgewogICAgICAgICAgICAgcmV0dXJuIGJ1aWxk
T2JqZWN0Rm9yQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMoY29udGV4dFdyYXBwZXIpOwotICAgICAg
ICB9LAotICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CisgICAgICAgIH0sIFtdIChNb25vc3RhdGUp
IC0+IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OkNvbnRleHRBdHRyaWJ1dGVz
PiB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9CkBAIC0xMDQwLDggKzEwMzYsOCBAQCBpbnQgSW5zcGVjdG9y
Q2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICAgICAg
aWYgKGRhdGEgPT0gaXRlbSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGF1
dG8gdHJhY2VBID0gV1RGOjpnZXRfaWY8UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4+KGRhdGEpOwot
ICAgICAgICBhdXRvIHRyYWNlQiA9IFdURjo6Z2V0X2lmPFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
PihpdGVtKTsKKyAgICAgICAgYXV0byB0cmFjZUEgPSBXVEY6OmdldF9pZjxSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPj4oJmRhdGEpOworICAgICAgICBhdXRvIHRyYWNlQiA9IFdURjo6Z2V0X2lmPFJl
ZlB0cjxTY3JpcHRDYWxsU3RhY2s+PigmaXRlbSk7CiAgICAgICAgIGlmICh0cmFjZUEgJiYgKnRy
YWNlQSAmJiB0cmFjZUIgJiYgKnRyYWNlQikKICAgICAgICAgICAgIHJldHVybiAoKnRyYWNlQSkt
PmlzRXF1YWwoKCp0cmFjZUIpLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGEzMGUyMTY0M2ExNTdhODJj
NWRkN2U1YjRkODU4NDBiNzRmYTUwMTYuLjg0NDRiNDcxNjY3NjVjYzgzZjU2NThjZmM4OWNkYjU0
MGRlY2Q0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
aGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3Rv
ckMKICNpZiBFTkFCTEUoV0VCR0wpCiBXZWJHTFByb2dyYW0qIEluc3BlY3RvclNoYWRlclByb2dy
YW06OnByb2dyYW0oKSBjb25zdAogewotICAgIGlmIChhdXRvKiBwcm9ncmFtV3JhcHBlciA9IFdU
Rjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR0xQcm9ncmFtPj4obV9wcm9ncmFt
KSkKKyAgICBpZiAoYXV0byogcHJvZ3JhbVdyYXBwZXIgPSBXVEY6OmdldF9pZjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4+KCZtX3Byb2dyYW0pKQogICAgICAgICByZXR1cm4g
JnByb2dyYW1XcmFwcGVyLT5nZXQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGZkOWVjNzU5NzM3ZDRjOTc1OTgz
MWU3NzI0MzU5YmUyZTg2NjI0MzAuLmQxMDcwODI0NGZhMDNmMzgzYzU1Nzk5MWI0Njc1M2JmZDIz
YTJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzQx
LDE4ICszNDEsMTggQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkg
Y29uc3QKIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBj
b25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtd
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisg
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCog
eyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCiAjaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRh
LmdldCgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEp
IC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7
IH0sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0
ZXM+JiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19n
ZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdSZWZQ
dHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9
LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAorICAg
ICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10o
Y29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCi0gICAgICAgIFtdKGNvbnN0IFBy
b3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAor
ICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQo
dmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQyNSwxOCArNDI1LDE4IEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAg
YXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAgW10oY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7
IH0sCiAjaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYg
ZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpOyB9LAorICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIENG
RGF0YUdldExlbmd0aChkYXRhLmdldCgpKTsgfSwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAg
ICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIGdfYnl0ZXNfZ2V0
X3NpemUoZGF0YS5nZXQoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYg
ZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSk7IH0s
CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLT5zaXplKCk7IH0sCisgICAg
ICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IHNpemVf
dCB7IHJldHVybiBkYXRhLT5zaXplKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LAot
ICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIHsgcmV0dXJuIHByb3ZpZGVyLnNp
emUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0
YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LAorICAgICAgICBbXShjb25zdCBQ
cm92aWRlciYgcHJvdmlkZXIpIC0+IHNpemVfdCB7IHJldHVybiBwcm92aWRlci5zaXplKCk7IH0K
ICAgICApOwogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5k
ZXggZjZiZmRkN2Y1ZjczMzdlZTFmMTAzNjVjNWUyMDEzMTg1YTdlMmY4YS4uNzhlMWNiNGNlODcx
OTdlNDY3YzE2YzE0Y2JlNjIxMzZiMGZlNjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDQsNyArNDQsNyBAQCBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSkgewotICAgICAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8UmV0YWluUHRy
PENGRGF0YVJlZj4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKKyAg
ICAgICAgaWYgKGF1dG8qIGRhdGEgPSBXVEY6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4o
Jm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiAqZGF0YTsKICAgICB9CiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAgaWYgKGVudHJ5LnNlZ21lbnQt
Pmhhc09uZVJlZigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8
UmV0YWluUHRyPENGRGF0YVJlZj4+KGVudHJ5LnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCisg
ICAgICAgICAgICBpZiAoYXV0byogZGF0YSA9IFdURjo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFS
ZWY+PigmZW50cnkuc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgICAgICBP
U0FsbG9jYXRvcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oY29uc3RfY2FzdDxVSW50OCo+KENG
RGF0YUdldEJ5dGVQdHIoZGF0YS0+Z2V0KCkpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEtPmdldCgp
KSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRleCA5YjYzMGRiZDI3ZGYxZjRk
ODkyZTdlZGYwMDU0MmU0NWNmNTliNmVlLi42YTRhZmVjMjgyNGRiZDk2ZmNjNDc0OTFjYmJkYTlh
ODNhZDQ0MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIE5vZGUgPSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgYm9vbCwgdWludDMyX3QsIHVp
bnQ2NF90LCBpbnQzMl90LCBpbnQ2NF90LCBmbG9hdCwgZG91YmxlLCBTdHJpbmcsIHN0ZDo6dW5p
cXVlX3B0cjxEaWN0aW9uYXJ5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5Pj47CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZh
bHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZh
bHVlKSkpOyB9CisgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBt
X21hcC5hZGQoa2V5LCBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxOb2RlPihzdGQ6
OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KICAgICBOb2RlKiBnZXQoY29uc3QgU3RyaW5nJiBrZXkp
IHsgcmV0dXJuIG1fbWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6CkBAIC0yMjMsNyArMjIzLDcg
QEAgY29uc3QgVCogS2V5ZWREZWNvZGVyR2VuZXJpYzo6Z2V0UG9pbnRlckZyb21EaWN0aW9uYXJ5
U3RhY2soY29uc3QgU3RyaW5nJiBrZXkpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBXVEY6OmdldF9pZjxUPigqbm9kZSk7CisgICAgcmV0dXJu
IFdURjo6Z2V0X2lmPFQ+KCZub2RlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYzQ1ZDAz
YzUxMWE5ZDFjNTU4NzNjYzRkZmI0MGU5NDY2MDhiZjZkMC4uNTYxZjNmZDczZjc4OTFkOTE3YWNk
MjZhZjllMTAxN2EyYmQyZmI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEwMTYsNyArMTAxNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgSGFzaE1hcDxBdG9tU3RyaW5n
LCBSZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4+JiB0cmFja3MgPSAqZ2V0PEhhc2hNYXA8QXRvbVN0
cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+KHZhcmlhbnRUcmFja3MpOworICAgIEhh
c2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+PiYgdHJhY2tzID0gKldU
Rjo6Z2V0PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+KHZh
cmlhbnRUcmFja3MpOwogCiAgICAgLy8gSWdub3JlIG5vdGlmaWNhdGlvbnMgYWZ0ZXIgYSBFT1Mu
IFdlIGRvbid0IHdhbnQgdGhlIHRyYWNrcyB0byBkaXNhcHBlYXIgd2hlbiB0aGUgdmlkZW8gaXMg
ZmluaXNoZWQuCiAgICAgaWYgKG1faXNFbmRSZWFjaGVkICYmICh0eXBlID09IFRyYWNrVHlwZTo6
QXVkaW8gfHwgdHlwZSA9PSBUcmFja1R5cGU6OlZpZGVvKSkKQEAgLTEwNzEsMTYgKzEwNzEsMTYg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2so
KQogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwogICAgICAgICB0cmFj
a3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgIFZhcmlhbnQ8QXVk
aW9UcmFja1ByaXZhdGUmLCBWaWRlb1RyYWNrUHJpdmF0ZSYsIEluYmFuZFRleHRUcmFja1ByaXZh
dGUmPiB2YXJpYW50VHJhY2sodHJhY2suZ2V0KCkpOworICAgICAgICBWYXJpYW50PEF1ZGlvVHJh
Y2tQcml2YXRlKiwgVmlkZW9UcmFja1ByaXZhdGUqLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKj4g
dmFyaWFudFRyYWNrKCZ0cmFjay5nZXQoKSk7CiAgICAgICAgIHN3aXRjaCAodmFyaWFudFRyYWNr
LmluZGV4KCkpIHsKICAgICAgICAgY2FzZSBUcmFja1R5cGU6OkF1ZGlvOgotICAgICAgICAgICAg
bV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soZ2V0PEF1ZGlvVHJhY2tQcml2YXRlJj4odmFyaWFudFRy
YWNrKSk7CisgICAgICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygqV1RGOjpnZXQ8QXVk
aW9UcmFja1ByaXZhdGUqPih2YXJpYW50VHJhY2spKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFRyYWNrVHlwZTo6VmlkZW86Ci0gICAgICAgICAgICBtX3BsYXllci0+YWRkVmlk
ZW9UcmFjayhnZXQ8VmlkZW9UcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2spKTsKKyAgICAgICAg
ICAgIG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKCpXVEY6OmdldDxWaWRlb1RyYWNrUHJpdmF0ZSo+
KHZhcmlhbnRUcmFjaykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJhY2tU
eXBlOjpUZXh0OgotICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayhnZXQ8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOworICAgICAgICAgICAgbV9wbGF5ZXIt
PmFkZFRleHRUcmFjaygqV1RGOjpnZXQ8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSo+KHZhcmlhbnRU
cmFjaykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCAwMDI0NjUx
MmVkZjM2YjNkZWE0YzU5NWUyNWU4YzEyMGYyYWMzOGFmLi5iZDVlZGI5NjRjYzg5NTYxNTZlMGYw
YWU2NDJhYzczNjViNDYyY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZgogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oY2xvbmVk
VGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUodGV4dHVyZS5pZCk7CiAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4oV1RGTW92ZShjbG9uZWRUZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKICAgICAgICAgfSwKLSAg
ICAgICAgW10oY29uc3QgWVVWVGV4dHVyZSYpCisgICAgICAgIFtdKGNvbnN0IFlVVlRleHR1cmUm
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+CiAg
ICAgICAgIHsKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfSwKLSAgICAgICAgW10oY29uc3QgRXh0ZXJuYWxPRVNUZXh0
dXJlJikKKyAgICAgICAgW10oY29uc3QgRXh0ZXJuYWxPRVNUZXh0dXJlJikgLT4gc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPgogICAgICAgICB7CiAgICAg
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaAppbmRleCA0
NjdkOTEzOTQ0NDNlZmEyODM2M2E4NmE4ZDU0ZmQyYzQ0NTg1M2NhLi5hMjNkNzAxMzI1YmY1Nzg3
YzAwM2Y5OTdiYjEyZDBkNDc5ZmM1NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja01lZGlhRGV2aWNlLmgKQEAgLTIwMSw3ICsyMDEsNyBAQCBzdHJ1Y3QgTW9ja01l
ZGlhRGV2aWNlIHsKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudElkOwogICAg
ICAgICBlbmNvZGVyIDw8IGxhYmVsOwotICAgICAgICBzd2l0Y2hPbihwcm9wZXJ0aWVzLCBbJl0o
Y29uc3QgTW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgIFdU
Rjo6c3dpdGNoT24ocHJvcGVydGllcywgWyZdKGNvbnN0IE1vY2tNaWNyb3Bob25lUHJvcGVydGll
cyYgcHJvcGVydGllcykgewogICAgICAgICAgICAgZW5jb2RlciA8PCAodWludDhfdCkxOwogICAg
ICAgICAgICAgZW5jb2RlciA8PCBwcm9wZXJ0aWVzOwogICAgICAgICB9LCBbJl0oY29uc3QgTW9j
a1NwZWFrZXJQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGNlOWU5ZjUwYWM0ZTY4ZDhlYWY2NjNiZjg2
MTU4ZjRmZGM2MmU1MmIuLmFhNWZhYWI0ZTU3N2M2YmJmNzg3Nzk5OTViN2UxZjkxNzZhZWZlOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0x
MjcsNyArMTI3LDcgQEAgdW5zaWduZWQgRm9ybURhdGE6OmltYWdlT3JNZWRpYUZpbGVzQ291bnQo
KSBjb25zdAogewogICAgIHVuc2lnbmVkIGltYWdlT3JNZWRpYUZpbGVzQ291bnQgPSAwOwogICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgYXV0byogZW5jb2Rl
ZEZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+
KGVsZW1lbnQuZGF0YSk7CisgICAgICAgIGF1dG8qIGVuY29kZWRGaWxlRGF0YSA9IFdURjo6Z2V0
X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPigmZWxlbWVudC5kYXRhKTsKICAg
ICAgICAgaWYgKCFlbmNvZGVkRmlsZURhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAt
MTQwLDcgKzE0MCw3IEBAIHVuc2lnbmVkIEZvcm1EYXRhOjppbWFnZU9yTWVkaWFGaWxlc0NvdW50
KCkgY29uc3QKIAogdWludDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKGNvbnN0
IEZ1bmN0aW9uPHVpbnQ2NF90KGNvbnN0IFVSTCYpPiYgYmxvYlNpemUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHN3aXRjaE9uKGRhdGEsCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZGF0YSwKICAg
ICAgICAgW10gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpIHsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgfSwgW10g
KGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpAQCAt
MTYyLDcgKzE2Miw3IEBAIHVpbnQ2NF90IEZvcm1EYXRhRWxlbWVudDo6bGVuZ3RoSW5CeXRlcygp
IGNvbnN0CiAKIEZvcm1EYXRhRWxlbWVudCBGb3JtRGF0YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXRjaE9uKGRhdGEsCisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oZGF0YSwKICAgICAgICAgW10gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpIHsK
ICAgICAgICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yIHsgYnl0ZXMuZGF0YSgp
LCBieXRlcy5zaXplKCkgfSk7CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6
OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEZv
cm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAg
IG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIW1fZWxlbWVudHMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8
dWludDhfdD4+KG1fZWxlbWVudHMubGFzdCgpLmRhdGEpKSB7CisgICAgICAgIGlmIChhdXRvKiB2
ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KCZtX2VsZW1lbnRzLmxhc3QoKS5k
YXRhKSkgewogICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEpLCBzaXplKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MjkzLDcgKzI5Myw3IEBAIFZlY3Rvcjx1aW50OF90PiBGb3JtRGF0YTo6ZmxhdHRlbigpIGNvbnN0
CiAgICAgLy8gQ29uY2F0ZW5hdGUgYWxsIHRoZSBieXRlIGFycmF5cywgYnV0IG9taXQgYW55IGZp
bGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZl
Y3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9
IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oJmVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAg
ICBkYXRhLmFwcGVuZCh2ZWN0b3ItPmRhdGEoKSwgdmVjdG9yLT5zaXplKCkpOwogICAgIH0KICAg
ICByZXR1cm4gZGF0YTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBGb3JtRGF0YUZvclVwbG9hZCBGb3Jt
RGF0YTo6cHJlcGFyZUZvclVwbG9hZCgpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZ2VuZXJhdGVk
RmlsZXM7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBh
dXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVE
YXRhPihlbGVtZW50LmRhdGEpOworICAgICAgICBhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lm
PEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPigmZWxlbWVudC5kYXRhKTsKICAgICAg
ICAgaWYgKCFmaWxlRGF0YSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoRmls
ZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhmaWxlRGF0YS0+ZmlsZW5hbWUpICE9
IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpCkBAIC00MjUsNyArNDI1LDcgQEAgVVJM
IEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdAogICAgIGlmIChtX2VsZW1lbnRzLnNpemUoKSAh
PSAxKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgaWYgKGF1dG8qIGJsb2JEYXRhID0gV1RG
OjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGE+KG1fZWxlbWVudHMuZmly
c3QoKS5kYXRhKSkKKyAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0
YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oJm1fZWxlbWVudHMuZmlyc3QoKS5kYXRhKSkKICAg
ICAgICAgcmV0dXJuIGJsb2JEYXRhLT51cmw7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwCmluZGV4IDBiOThlYjc1ZDkwZjdmNzMzMzIyZDI4Njg5OGZhNjYyMzY3YjQxZWEu
LjQyYTE2ZmUzNjBjYWM2NzBmZDgzMmYyZjdkMjI4OGZmZWFhNGYyNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBib29sIGFkdmFuY2VDdXJyZW50U3Ry
ZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgLy8gQ3JlYXRlIHRoZSBuZXcgc3RyZWFt
LgogICAgIEZvcm1EYXRhRWxlbWVudCYgbmV4dElucHV0ID0gZm9ybS0+cmVtYWluaW5nRWxlbWVu
dHMubGFzdCgpOwogCi0gICAgYm9vbCBzdWNjZXNzID0gc3dpdGNoT24obmV4dElucHV0LmRhdGEs
CisgICAgYm9vbCBzdWNjZXNzID0gV1RGOjpzd2l0Y2hPbihuZXh0SW5wdXQuZGF0YSwKICAgICAg
ICAgW2Zvcm1dIChWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICBzaXplX3Qg
c2l6ZSA9IGJ5dGVzLnNpemUoKTsKICAgICAgICAgICAgIE1hbGxvY1B0cjx1aW50OF90LCBXVEY6
OlZlY3Rvck1hbGxvYz4gZGF0YSA9IGJ5dGVzLnJlbGVhc2VCdWZmZXIoKTsKQEAgLTM5Nyw3ICsz
OTcsNyBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwg
Rm9ybURhdGEqIGZvcm1EYXRhKQogICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2Fz
ZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVs
ZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9
PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZl
Y3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4o
JmVsZW1lbnRzWzBdLmRhdGEpKSB7CiAgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZShudWxscHRyLCB2ZWN0b3ItPmRhdGEoKSwgdmVjdG9yLT5zaXplKCkpKTsKICAg
ICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keShyZXF1ZXN0LCBkYXRhLmdl
dCgpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4IDI0ZDFjN2Q3MDY1MDE2ZTU1
MmU5ZmM2ZTllZDkyOGE1MTAyOTJkNmMuLjViNWUyODIwZWUwMTIwNDVjM2Y2ZjVjYjYxZjJjOTQ2
NTUyMzFjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDb250ZXh0LmNwcApAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgQ3VybEhhbmRsZTo6
ZW5hYmxlU1NMRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCiAjaWYgT1MoV0lORE9XUykKICAg
ICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX1NTTF9PUFRJT05TLCBDVVJMU1NM
T1BUX05BVElWRV9DQSk7CiAjZWxzZQotICAgIGlmIChhdXRvKiBwYXRoID0gV1RGOjpnZXRfaWY8
U3RyaW5nPihzc2xIYW5kbGUuZ2V0Q0FDZXJ0SW5mbygpKSkKKyAgICBpZiAoYXV0byogcGF0aCA9
IFdURjo6Z2V0X2lmPFN0cmluZz4oJnNzbEhhbmRsZS5nZXRDQUNlcnRJbmZvKCkpKQogICAgICAg
ICBzZXRDQUNlcnRQYXRoKHBhdGgtPnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCmluZGV4IGNjOWFiMGJjMDg1NTFlZmYwN2RmNDMzYjc2M2I5OWU4NTFiN2Y5
NDQuLjdhYTI2MmRjNzcxNjVkNmI3MjE5NmQ4ZWIxNmQ1Yzg5MmVlOGQ5ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1
cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogICAgICAg
ICAgICAgICAgIHJldHVybiByZWFkRnJvbURhdGEoYnl0ZXMsIGJ1ZmZlclBvc2l0aW9uLCBidWZm
ZXJTaXplKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNv
ZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRGcm9t
RmlsZShmaWxlRGF0YSwgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclNpemUpOwotICAgICAgICAgICAg
fSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJikgeworICAgICAg
ICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJikgLT4g
c3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
U0xWZXJpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTFZlcmlmaWVyLmNwcAppbmRleCA4Yjc5YmUyYTI4NmU1MmJmZjZjYjI5OTE3NjBlMTZlMjdh
MWI0NmMwLi41NGY5YTY0YjQxNzk5N2VkYTZmNjk2YzJiNmQzZmEyY2IxYjM3Y2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZl
cmlmaWVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBDdXJsU1NMVmVyaWZpZXI6OkN1cmxTU0xWZXJp
Zmllcih2b2lkKiBzc2xDdHgpCiAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgU1NMX0NUWF9n
ZXRfdmVyaWZ5X21vZGUoY3R4KSwgdmVyaWZ5Q2FsbGJhY2spOwogCiAjaWYgZGVmaW5lZChMSUJS
RVNTTF9WRVJTSU9OX05VTUJFUikKLSAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8Q2Vy
dGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZT4oc3NsSGFuZGxlLmdldENBQ2VydEluZm8oKSkpCisg
ICAgaWYgKGF1dG8gZGF0YSA9IHN0ZDo6Z2V0X2lmPENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNh
dGU+KCZzc2xIYW5kbGUuZ2V0Q0FDZXJ0SW5mbygpKSkKICAgICAgICAgU1NMX0NUWF9sb2FkX3Zl
cmlmeV9tZW0oY3R4LCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0
YS0+ZGF0YSgpKSksIGRhdGEtPnNpemUoKSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwCmluZGV4IDUyM2QwZDIxODU3ZDkwNDhjNTZiYjhjMTAzZDhhYTAwYmMxMGU2MDEuLjkzOTU4
ZTI0ZGE2MDVmM2U1YTQ3Y2Q2YzY1ZmFiZTc0YWNjY2VkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291
cC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291
cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgQmxvYlJlZ2lzdAogICAgIC8v
IEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRh
LCB3aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRz
KCk7CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3Ry
ZWFtKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1
aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9
IHN0ZDo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oJmVsZW1lbnRzWzBdLmRhdGEpKSB7CiAjaWYg
VVNFKFNPVVAyKQogICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNz
YWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFSWSwgdmVjdG9yLT5kYXRhKCks
IHZlY3Rvci0+c2l6ZSgpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZUZvckZvbnRSYXcuY3BwCmluZGV4IDcxYzc0Y2IwNjI0NTJiZGMwMTlhMDA3NzQ5YTk0
ODM2ZDQ2YTNhYjIuLjQyN2RkODg1NDhiZWY2NGY2MmM2ZTlmZmNiYmIxOTIxMjc1MWY0MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBA
IC0xNTgsNyArMTU4LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZv
bnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGUKICAgICB9CiAKICAgICBp
ZiAoZm9udFJhdy53ZWlnaHQpIHsKLSAgICAgICAgYXV0byB3ZWlnaHQgPSBzd2l0Y2hPbigqZm9u
dFJhdy53ZWlnaHQsIFsmXSAoQ1NTVmFsdWVJRCBpZGVudCkgeworICAgICAgICBhdXRvIHdlaWdo
dCA9IFdURjo6c3dpdGNoT24oKmZvbnRSYXcud2VpZ2h0LCBbJl0gKENTU1ZhbHVlSUQgaWRlbnQp
IHsKICAgICAgICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVOb3JtYWw6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbFdlaWdodFZhbHVlKCk7CkBA
IC0xNzksNyArMTc5LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZv
bnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGUKICAgICB9CiAKICAgICBm
b250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemVGcm9tSWRlbnRpZmllcihDU1NWYWx1ZUludmFs
aWQpOwotICAgIGZsb2F0IHNpemUgPSBzd2l0Y2hPbihmb250UmF3LnNpemUsIFsmXSAoQ1NTVmFs
dWVJRCBpZGVudCkgeworICAgIGZsb2F0IHNpemUgPSBXVEY6OnN3aXRjaE9uKGZvbnRSYXcuc2l6
ZSwgWyZdIChDU1NWYWx1ZUlEIGlkZW50KSB7CiAgICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVh4U21hbGw6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVYU21hbGw6
CkBAIC0xOTksNyArMTk5LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZv
ckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGUKICAgICAgICAgICAg
IHJldHVybiAwLmY7CiAgICAgICAgIH0KICAgICB9LCBbJl0gKGNvbnN0IENTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6TGVuZ3RoT3JQZXJjZW50UmF3JiBsZW5ndGhPclBlcmNlbnQpIHsKLSAgICAg
ICAgcmV0dXJuIHN3aXRjaE9uKGxlbmd0aE9yUGVyY2VudCwgWyZdIChjb25zdCBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6Okxlbmd0aFJhdyYgbGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGxlbmd0aE9yUGVyY2VudCwgWyZdIChjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnM6Okxlbmd0aFJhdyYgbGVuZ3RoKSB7CiAgICAgICAgICAgICBhdXRvIGZvbnRDYXNjYWRl
ID0gRm9udENhc2NhZGUoRm9udENhc2NhZGVEZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKTsK
ICAgICAgICAgICAgIGZvbnRDYXNjYWRlLnVwZGF0ZShjb250ZXh0LmNzc0ZvbnRTZWxlY3Rvcigp
KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzaW5nIG51bGwgZm9yIHRoZSBSZW5kZXJWaWV3
IHBhcmFtZXRlciBtZWFucyB0aGF0IHZ3IGFuZCB2aCB1bml0cyB3aWxsIGV2YWx1YXRlIHRvCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGRiMTU1YWNhM2Y3M2Q5NjUxMWYwMTAyOTBk
NmEyMjE2NDlmOGM5ZjEuLjFjNjQ1ZjZmYzg0OWZjNzQ3ZDI1YzhlNTU4MTUxZWZiNjFmNDc1ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmUKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IGZpbGVzOwogICAgIGlmIChhdXRvKiBib2R5ID0gbG9hZFBhcmFtZXRlcnMu
cmVxdWVzdC5odHRwQm9keSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGJvZHkt
PmVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBibG9iRGF0YSA9IFdURjo6Z2V0
X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhPihlbGVtZW50LmRhdGEpKQorICAg
ICAgICAgICAgaWYgKGF1dG8qIGJsb2JEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkQmxvYkRhdGE+KCZlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgICAgIGZpbGVz
LmFwcGVuZFZlY3RvcihibG9iUmVnaXN0cnkuZmlsZXNJbkJsb2IoYmxvYkRhdGEtPnVybCkpOwog
ICAgICAgICB9CiAgICAgICAgIGNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4o
bG9hZFBhcmFtZXRlcnMucmVxdWVzdCkuc2V0SFRUUEJvZHkoYm9keS0+cmVzb2x2ZUJsb2JSZWZl
cmVuY2VzKCZibG9iUmVnaXN0cnkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXgg
ZGRmOTZkZTAzM2M2NWY1NTIxZjNiYmJlODFkMTlhYzhlN2E1YmU5ZC4uNGUwZmJjZDRlODdlM2Yw
ZDBmZmM2NjIzZTA5NTEyZTNjZmY3Y2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgICAgICBWZWN0b3I8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zOwogICAgICAg
ICBmb3IgKGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6IHJlcXVlc3QuaHR0cEJvZHko
KS0+ZWxlbWVudHMoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpn
ZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxl
bWVudDo6RW5jb2RlZEZpbGVEYXRhPigmZWxlbWVudC5kYXRhKSkgewogICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRhLT5maWxlbmFtZTsKICAgICAgICAgICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQogICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCmluZGV4IGMy
ZDU4OTU5NWY1ZTM0MTBkMWFlYWY0MmJhN2FlZTIzOGY3MTU0MTcuLmI0MzExZjM1YThjMzgwNjZm
ODUzMWFkYTIzODlmYjg5YTg4MWYxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRm9ybURhdGFSZWZlcmVuY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgVmVjdG9yPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlczsKICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9kYXRhLT5lbGVtZW50
cygpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxXZWJD
b3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkgewor
ICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8V2ViQ29yZTo6Rm9y
bURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KCZlbGVtZW50LmRhdGEpKSB7CiAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPmZpbGVuYW1lOwogICAgICAg
ICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkp
KQogICAgICAgICAgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5hcHBlbmQoV1RG
TW92ZSgqaGFuZGxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAppbmRleCA5NjJl
MjExZTFiZjJjMTE4MjhiYmQ3ZTA3NDgyNjkwOWQwYzAzMzgwLi4zNGNhYzA5NTFlM2RhZDY3YzQ2
ZDQ5MzM3MDM1MWMwODNmYzY2YjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAK
QEAgLTE1MywxMyArMTUzLDExIEBAIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgT3JkZXJlZE1hcDo6
aXRlcmF0b3I+IE1lZGlhU2FtcGxlQ3Vyc29yOjpsb2NhdGVJdGVyYXRvcihPCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAg
IHJldHVybiBsb2NhdGVJdGVyYXRvcihzYW1wbGVzLCBoYXNBbGxTYW1wbGVzKTsKLSAgICAgICAg
fSwKLSAgICAgICAgWyZdKGNvbnN0IGF1dG8mIG90aGVySXRlcmF0b3IpIHsKKyAgICAgICAgfSwg
WyZdKGNvbnN0IGF1dG8mIG90aGVySXRlcmF0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8SXRlcmF0b3I+
IHsKICAgICAgICAgICAgIGFzc2VydElzSGVsZChtX2xvY2F0b3JMb2NrKTsKICAgICAgICAgICAg
IG1fbG9jYXRvciA9IG90aGVySXRlcmF0b3ItPnNlY29uZC0+cHJlc2VudGF0aW9uVGltZSgpOwog
ICAgICAgICAgICAgcmV0dXJuIGxvY2F0ZUl0ZXJhdG9yKHNhbXBsZXMsIGhhc0FsbFNhbXBsZXMp
OwotICAgICAgICB9LAotICAgICAgICBbJl0oY29uc3QgSXRlcmF0b3ImIGl0ZXJhdG9yKSB7Cisg
ICAgICAgIH0sIFsmXShjb25zdCBJdGVyYXRvciYgaXRlcmF0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8
SXRlcmF0b3I+IHsKICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKICAgICAgICAgfQogICAg
ICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwuaAppbmRleCAwYjBlMjFlZWE4NmRlYjRkZjBiMmNhMDRmNTQyM2EyMmNl
YjczNGU1Li44MmMxYmY4OTQxY2Q3YWJhNjU1ODNiMTNkZjNkNWEzNWM2ZWMyYWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIuaAppbmRleCA4MDZiMjU0ZTMwNzBiZTg0NGExYjIzOTEyNDFkZTY3NWM5NGNhODRkLi4z
YWEyNWZkMDY3OTc4MTYyMmYxMDY2NWM3NDdiY2Q3YzVmM2QxYjhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+Cisj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgKaW5kZXggNjFiZTM3MTdiODA2NDZh
NmZhMzAxYjIyMzU0YWY3ODlhMjU0YTVlMC4uNDMxODljMGEzYTFlOTU5NzgwY2FiMTJhZTI2Yzhi
NzdlZDUzNzA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tT
YWZlQnJvd3NpbmdXYXJuaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KICNpbXBvcnQgPHd0Zi9XZWFr
T2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk5NGM5MDM3Y2Q5OThiOGIyZmFmN2U2MzhmMGYx
YjYxYjYwNTRmYjYuLjc1NWFmMzg3OTM0ODZlMjlkYjUzYjU5NDE0ZWEzYWE5MzQxOTBhYjUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50IHRv
IHN0ZDo6dmFyaWFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxMjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6YWRkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJp
YW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTEwLTA1ICBE
YXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwICMy
OiBXVEY6OlJldGFpblB0cjw+IGFsbG93cyBhc3NpZ25tZW50IG9mIHR3byBwb2ludGVyIHR5cGVz
IHRoYXQgYXJlIG5vdCBhc3NpZ25hYmxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aGVyLmNwcAppbmRleCA1OWUyMjU2MjRmYjNhNWZkNjUyY2QyYTJhMjQ5ZmE2NTM0ZDk2MDQ1Li44
NjQ4OTY4NTI1OGVmMWM5OGRjOTBiMjY1NDRjNGY0ZWNlZGVjNDg3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdHJ1Y3QgSGFz
aGVyQWRkQ3VzdG9tMiB7IH07CiAKIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBIYXNo
ZXJBZGRDdXN0b20yJikKIHsKLSAgICBhZGQoaGFzaGVyLCB7IDEsIDIsIDMsIDQgfSk7CisgICAg
YWRkKGhhc2hlciwgc3RkOjppbml0aWFsaXplcl9saXN0PGludD4geyAxLCAyLCAzLCA0IH0pOwog
fQogCiBURVNUKFdURiwgSGFzaGVyX2N1c3RvbSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVmFyaWFudC5jcHAKaW5kZXggNTFlY2EwNzY4ZDJjY2UxYzlhMzI5NTU1MmQzNTAwOWZmNGZk
NTZiYi4uZjU5YWQzMDk2ZTBkNmZmNDhlN2JmNmE4MzQzODExOWZlMzBlMWE3MCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKQEAgLTU0LDE4ICs1NCwxOCBAQCBU
RVNUKFdURl9WYXJpYW50LCBJbml0aWFsKQogVEVTVChXVEZfVmFyaWFudCwgQmFzaWMpCiB7CiAg
ICAgVmFyaWFudDxpbnQsIGRvdWJsZT4gdmFyaWFudCA9IDE7Ci0gICAgRVhQRUNUX1RSVUUodmFy
aWFudC5pbmRleCgpID09IDApOwotICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0PGludD4odmFyaWFu
dCkgPT0gMSk7Ci0gICAgRVhQRUNUX1RSVUUoKldURjo6Z2V0X2lmPGludD4odmFyaWFudCkgPT0g
MSk7Ci0gICAgRVhQRUNUX1RSVUUoV1RGOjpnZXRfaWY8ZG91YmxlPih2YXJpYW50KSA9PSBudWxs
cHRyKTsKKyAgICBFWFBFQ1RfRVEodmFyaWFudC5pbmRleCgpLCAwdSk7CisgICAgRVhQRUNUX0VR
KFdURjo6Z2V0PGludD4odmFyaWFudCksIDEpOworICAgIEVYUEVDVF9FUSgqV1RGOjpnZXRfaWY8
aW50PigmdmFyaWFudCksIDEpOworICAgIEVYUEVDVF9FUShXVEY6OmdldF9pZjxkb3VibGU+KCZ2
YXJpYW50KSwgbnVsbHB0cik7CiAgICAgRVhQRUNUX1RSVUUoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxpbnQ+KHZhcmlhbnQpKTsKICAgICBFWFBFQ1RfRkFMU0UoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxkb3VibGU+KHZhcmlhbnQpKTsKIAogICAgIHZhcmlhbnQgPSAxLjA7Ci0gICAgRVhQRUNUX1RS
VUUodmFyaWFudC5pbmRleCgpID09IDEpOwotICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0PGRvdWJs
ZT4odmFyaWFudCkgPT0gMSk7Ci0gICAgRVhQRUNUX1RSVUUoKldURjo6Z2V0X2lmPGRvdWJsZT4o
dmFyaWFudCkgPT0gMS4wKTsKLSAgICBFWFBFQ1RfVFJVRShXVEY6OmdldF9pZjxpbnQ+KHZhcmlh
bnQpID09IG51bGxwdHIpOworICAgIEVYUEVDVF9FUSh2YXJpYW50LmluZGV4KCksIDF1KTsKKyAg
ICBFWFBFQ1RfRVEoV1RGOjpnZXQ8ZG91YmxlPih2YXJpYW50KSwgMSk7CisgICAgRVhQRUNUX0VR
KCpXVEY6OmdldF9pZjxkb3VibGU+KCZ2YXJpYW50KSwgMS4wKTsKKyAgICBFWFBFQ1RfRVEoV1RG
OjpnZXRfaWY8aW50PigmdmFyaWFudCksIG51bGxwdHIpOwogICAgIEVYUEVDVF9UUlVFKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPih2YXJpYW50KSk7CiAgICAgRVhQRUNUX0ZBTFNFKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8aW50Pih2YXJpYW50KSk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="464096"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440236</attachid>
            <date>2021-10-05 10:56:43 -0700</date>
            <delta_ts>2021-10-05 12:00:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231239-20211005105642.patch</filename>
            <type>text/plain</type>
            <size>79327</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjUyMmJiMzBhYWUyYTRlODZmMzFlMDQ2YjBkZjY0NjdjZGYzMjRkLi5jMjlhZWVjNDE5MWY2Njg2
MzYxNWM0ZWRjYTc0ZmZkYjA1NzM3MGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50
IHRvIHN0ZDo6dmFyaWFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMxMjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogcGFyc2VyL0xleGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlSGV4KToKKyAgICAgICAgKEpTQzo6
TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlT2N0
YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKToKKyAgICAgICAgKiBy
dW50aW1lL0NhY2hlUGF5bG9hZC5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlUGF5bG9hZDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlUGF5bG9hZDo6c2l6ZSBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9DYWNoZVVwZGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlVXBkYXRl
OjpDYWNoZVVwZGF0ZSk6CisKIDIwMjEtMTAtMDQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRGlzcGxheSByZXR1cm4gdmFsdWVzIGluIG5pY2VyIHdheSBpbiB0
aGUganNjIFJFUEwgYW5kIGFkZCBhIHByZXR0eVByaW50IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4NDgwMmU4
NjAzYjY5ZDZiNGYwOWI2NTQyNjY5ZTQzMTU3ZjQ1N2MuLmUwMWYwMzhiOTY0ZjMyYTk3MDFhN2Jk
OGE3ZGYzY2UyNTViNTY4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMDUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBQcmVwYXJl
IHRvIHN3aXRjaCBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTIzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIHBpZWNlcyBv
ZiBidWcgMjMxMDg2IHRoYXQgY2FuIGJlIGRvbmUgd2l0aG91dCBjaGFuZ2luZyBiZWhhdmlvci4K
KworICAgICAgICAxLiBJdCBtYWtlcyBXVEY6OmdldF9pZiBsb29rIG1vcmUgbGlrZSBzdGQ6Omdl
dF9pZiBieSB0YWtpbmcgYSBwb2ludGVyIHRvIGEgdmFyaWFudCBpbnN0ZWFkIG9mIGEgcmVmZXJl
bmNlLgorICAgICAgICAyLiBzdGQ6OnZpc2l0IGlzIHBpY2tpZXIgdGhhbiBXVEY6OnZpc2l0LiAg
VGhlIGZvcm1lciBhbGxvd3MgdGFraW5nIGxhbWJkYXMgd2l0aCBkaWZmZXJlbnQgcmV0dXJuIHR5
cGVzIGFzIGxvbmcKKyAgICAgICAgYXMgdGhlIHJldHVybiB0eXBlcyBjYW4gYmUgY29udmVydGVk
IHRvIHRoZSBvdmVyYWxsIGRlc2lyZWQgcmV0dXJuIHR5cGUuICBzdGQ6OnZpc2l0IGhhcyBhIHN0
YXRpY19hc3NlcnQgdGhhdCB0aGUKKyAgICAgICAgcmV0dXJuIHR5cGVzIG9mIGFsbCB0aGUgbGFt
YmRhcyBhcmUgYWxsIGV4YWN0bHkgdGhlIHNhbWUgdHlwZSwgc28gSSBleHBsaWNpdGx5IGRlY2xh
cmUgdGhlIHJldHVybiB0eXBlIG9mIG1hbnkgbGFtYmRhcy4KKyAgICAgICAgMy4gSXQgYWxzbyBy
ZXNvbHZlcyBzb21lIHR5cGVzIHRoYXQgd2lsbCBiZWNvbWUgYW1iaWd1b3VzIGJ5IHVzaW5nIFdU
Rjo6aW5fcGxhY2UsCisgICAgICAgIHdoaWNoIHdpbGwgYmVjb21lIHdyYXBwZWQgYnkgc3RkOjpp
bl9wbGFjZV90eXBlIHRoZW4gcmVtb3ZlZC4KKyAgICAgICAgNC4gSXQgYWRkcyBhIGZldyBleHBs
aWNpdCBXVEY6OiBhbmQgI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+IHRoYXQgd2lsbCBiZSBuZWVk
ZWQgYWZ0ZXIgcmVtb3ZpbmcgVmFyaWFudCBmcm9tIEZvcndhcmQuaC4KKyAgICAgICAgNS4gSXQg
cmVtb3ZlcyB0aGUgZmFzdCBtYWxsb2MgY2hlY2sgaW4gdGhlIG9uZSBwbGFjZSBhIFZhcmlhbnQg
aXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGluIEtleWVkRGVjb2RlckdlbmVyaWMuY3BwCisgICAg
ICAgICh3aGljaCBpcyBmb3Igbm9uLWNvY29hIHBsYXRmb3JtcykgYmVjYXVzZSBzdGQ6OnZhcmlh
bnQgaXNuJ3QgZmFzdCBhbGxvY2F0ZWQuCisKKyAgICAgICAgKiB3dGYvTGlrZWx5RGVuc2VVbnNp
Z25lZEludGVnZXJTZXQuaDoKKyAgICAgICAgKFdURjo6TGlrZWx5RGVuc2VVbnNpZ25lZEludGVn
ZXJTZXQ6Oml0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAqIHd0Zi9WYXJpYW50
Lmg6CisgICAgICAgIChXVEY6OmdldF9pZik6CisKIDIwMjEtMTAtMDUgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3ctdXAgIzI6IFdURjo6UmV0YWlu
UHRyPD4gYWxsb3dzIGFzc2lnbm1lbnQgb2YgdHdvIHBvaW50ZXIgdHlwZXMgdGhhdCBhcmUgbm90
IGFzc2lnbmFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYjczN2IyNjc3NGUxMzIxZTU1ZmExMjc4ZTQ0NWMx
MDQyMmU0OTFlLi5mYThkMDcxZDFlODk2MjVkNzk3YjFjMmRiMDlmZmZiNjNhNzUwMjJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTA4IEBACisyMDIxLTEwLTA1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJlcGFyZSB0byBzd2l0Y2ggZnJv
bSBXVEY6OlZhcmlhbnQgdG8gc3RkOjp2YXJpYW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5KToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkaW5nRXhjZXB0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRJY2VDYW5kaWRhdGUpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6aXNBdHRhY2hlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6Omhhc1NvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9z
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVyOjpjYW52YXMgY29uc3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW50UG9pbnRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpvYmplY3RBdHRyaWJ1dGVWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpyZWN0QXR0cmli
dXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dmVj
dG9yQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6b3B0aW9uU2V0QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6cGFpckF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnVpbnQ2NEF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnVybEF0dHJpYnV0ZVZhbHVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnBhdGhBdHRyaWJ1dGVWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpjb2xvckF0dHJp
YnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmZs
b2F0QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6ZG91YmxlQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6dW5zaWduZWRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgICog
YmluZGluZ3MvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRX
ZWJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9KU1ZhbHVlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudDo6bWV0aG9kRGV0YWlscyBj
b25zdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6b3BlcmF0b3IgSlNDOjpK
U1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVGb250V2VpZ2h0KToKKyAgICAgICAgKiBkb20v
TWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6bWVtb3J5
Q29zdCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcpOgorICAgICAgICAqIGVkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6Om1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL1VSTFNlYXJjaFBhcmFtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVUkxT
ZWFyY2hQYXJhbXM6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0NvbnRleHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1
aWxkT2JqZWN0Rm9yQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
aW5kZXhGb3JEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpwcm9ncmFt
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlvbmFyeTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6
OktleWVkRGVjb2RlckdlbmVyaWM6OmdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYURldmljZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjppbWFnZU9yTWVkaWFGaWxl
c0NvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6bGVuZ3Ro
SW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6ZmxhdHRlbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YTo6cHJlcGFyZUZvclVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtRGF0YTo6YXNCbG9iVVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZUN1cnJl
bnRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SFRUUEJvZHkpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsSGFuZGxlOjplbmFibGVTU0xGb3JIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3Jt
RGF0YVN0cmVhbTo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
U0xWZXJpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU1NMVmVyaWZpZXI6OkN1cmxT
U0xWZXJpZmllcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVT
b3VwTWVzc2FnZUJvZHkgY29uc3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckZv
bnRSYXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JGb250UmF3KToK
KwogMjAyMS0xMC0wNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCBmcm9tIFJ1bGVTZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZjg1ZGYzZjBhZTNiOWYwYzYzYWE3YzkxM2U4MjYyNzJmYTVmYTNlMy4uZDFkYWY2NjA1OWMz
NDk1NWJmNDQzYmFjN2IxYjBlOTkwOWIxZWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6dmFy
aWFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVy
ZW5jZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJl
bmNlLmg6CisgICAgICAgIChJUEM6OkZvcm1EYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBsZUN1cnNvcjo6bG9jYXRlSXRlcmF0b3Ig
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcu
aDoKKwogMjAyMS0xMC0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBTUEkgdG8gbGF1bmNoIGEgc2VydmljZSBzZXJ2aWNlIHdvcmtlciBpbiBhIFdLV2Vi
VmlldyBhbmQgZXhwb3NlIHNlcnZpY2Ugd29ya2VyIHRvIGluamVjdGVkIGJ1bmRsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBiNGM4
Zjg2MGI1MTRlNmQ3OWRmMDFhYzdmMjk2ZmMwODFkZTdhMWY2Li5hY2YzNjRiMjE4ZThkY2QwNDJi
YzcxYzc1N2I1NjVjNWIyNjdiM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTA1NDgsMTMgKzEwNTQ4LDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCiAKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGhhdmUgYSB3YXkgdG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9m
IHJlZ2lzdGVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzMDk5Ci0gICAgVmVjdG9yPFZhcmlhbnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1
bGF0ZUludDMyT3BlcmFuZCwgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+LCBKU0NfRE9NSklUX1NJ
R05BVFVSRV9NQVhfQVJHVU1FTlRTX0lOQ0xVRElOR19USElTPiBvcGVyYW5kczsKKyAgICB1c2lu
ZyBPcGVyYW5kVmFyaWFudCA9IFZhcmlhbnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1bGF0
ZUludDMyT3BlcmFuZCwgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+OworICAgIFZlY3RvcjxPcGVy
YW5kVmFyaWFudCwgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdf
VEhJUz4gb3BlcmFuZHM7CiAgICAgVmVjdG9yPEdQUlJlZywgSlNDX0RPTUpJVF9TSUdOQVRVUkVf
TUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4gcmVnczsKIAogICAgIGF1dG8gYXBwZW5kQ2Vs
bCA9IFsmXShFZGdlJiBlZGdlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJh
bmQodGhpcywgZWRnZSk7CiAgICAgICAgIHJlZ3MuYXBwZW5kKG9wZXJhbmQuZ3ByKCkpOwotICAg
ICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChPcGVyYW5kVmFyaWFudChXVEY6OmluX3BsYWNlPFNwZWN1bGF0ZUNlbGxPcGVyYW5k
PiwgV1RGTW92ZShvcGVyYW5kKSkpOwogICAgIH07CiAKICAgICBhdXRvIGFwcGVuZFN0cmluZyA9
IFsmXShFZGdlJiBlZGdlKSB7CkBAIC0xMDU2MiwxOSArMTA1NjMsMTkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIGdwciA9
IG9wZXJhbmQuZ3ByKCk7CiAgICAgICAgIHJlZ3MuYXBwZW5kKGdwcik7CiAgICAgICAgIHNwZWN1
bGF0ZVN0cmluZyhlZGdlLCBncHIpOwotICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShv
cGVyYW5kKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChPcGVyYW5kVmFyaWFudChXVEY6Omlu
X3BsYWNlPFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiwgV1RGTW92ZShvcGVyYW5kKSkpOwogICAgIH07
CiAKICAgICBhdXRvIGFwcGVuZEludDMyID0gWyZdKEVkZ2UmIGVkZ2UpIHsKICAgICAgICAgU3Bl
Y3VsYXRlSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CiAgICAgICAgIHJlZ3MuYXBw
ZW5kKG9wZXJhbmQuZ3ByKCkpOwotICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVy
YW5kKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChPcGVyYW5kVmFyaWFudChXVEY6OmluX3Bs
YWNlPFNwZWN1bGF0ZUludDMyT3BlcmFuZD4sIFdURk1vdmUob3BlcmFuZCkpKTsKICAgICB9Owog
CiAgICAgYXV0byBhcHBlbmRCb29sZWFuID0gWyZdKEVkZ2UmIGVkZ2UpIHsKICAgICAgICAgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICAgICAgcmVncy5h
cHBlbmQob3BlcmFuZC5ncHIoKSk7Ci0gICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9w
ZXJhbmQpKTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5kKE9wZXJhbmRWYXJpYW50KFdURjo6aW5f
cGxhY2U8U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+LCBXVEZNb3ZlKG9wZXJhbmQpKSk7CiAgICAg
fTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKaW5kZXggMGZiZTBiYzhmN2FmZjFkYmEyNjZkMjI4NjYxM2ZjZTcxOTM5NGZhOS4u
MmE4YTY3YWYzZjIyY2I1ZmMyNTQyODI1MmYyNmZkYTIzOTRmODM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIEFMV0FZU19JTkxJ
TkUgYXV0byBMZXhlcjxUPjo6cGFyc2VIZXgoKSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNl
UmVzdWx0PgogICAgIH0gd2hpbGUgKGlzQVNDSUlIZXhEaWdpdE9yU2VwYXJhdG9yKG1fY3VycmVu
dCkgJiYgbWF4aW11bURpZ2l0cyA+PSAwKTsKIAogICAgIGlmIChMSUtFTFkobWF4aW11bURpZ2l0
cyA+PSAwICYmIG1fY3VycmVudCAhPSAnbicpKQotICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VS
ZXN1bHQgeyBoZXhWYWx1ZSB9OworICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBz
dGF0aWNfY2FzdDxkb3VibGU+KGhleFZhbHVlKSB9OwogCiAgICAgLy8gTm8gbW9yZSBwbGFjZSBp
biB0aGUgaGV4VmFsdWUgYnVmZmVyLgogICAgIC8vIFRoZSB2YWx1ZXMgYXJlIHNoaWZ0ZWQgb3V0
IGFuZCBwbGFjZWQgaW50byB0aGUgbV9idWZmZXI4IHZlY3Rvci4KQEAgLTE2MDksNyArMTYwOSw3
IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoKSAtPiBzdGQ6Om9w
dGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIH0gd2hpbGUgKGlzQVNDSUlCaW5hcnlEaWdp
dE9yU2VwYXJhdG9yKG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKICAgICBpZiAoTElLRUxZ
KCFpc0FTQ0lJRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDAgJiYgbV9j
dXJyZW50ICE9ICduJykpCi0gICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IGJpbmFy
eVZhbHVlIH07CisgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IHN0YXRpY19jYXN0
PGRvdWJsZT4oYmluYXJ5VmFsdWUpIH07CiAKICAgICBmb3IgKGludCBpID0gbWF4aW11bURpZ2l0
cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0x
NjY1LDcgKzE2NjUsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlT2N0YWwo
KSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIH0gd2hpbGUgKGlzQVND
SUlPY3RhbERpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAogICAg
IGlmIChMSUtFTFkoIWlzQVNDSUlEaWdpdE9yU2VwYXJhdG9yKG1fY3VycmVudCkgJiYgZGlnaXQg
Pj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKLSAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVz
dWx0IHsgb2N0YWxWYWx1ZSB9OworICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBz
dGF0aWNfY2FzdDxkb3VibGU+KG9jdGFsVmFsdWUpIH07CiAKICAgICBmb3IgKGludCBpID0gbWF4
aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAgICAgcmVjb3JkOChkaWdpdHNb
aV0pOwpAQCAtMTcyNCw3ICsxNzI0LDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+Ojpw
YXJzZURlY2ltYWwoKSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgICAg
ICB9IHdoaWxlIChpc0FTQ0lJRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpICYmIGRpZ2l0ID49
IDApOwogCiAgICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAnLicgJiYgIWlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnZScpICYmIG1fY3VycmVudCAhPSAn
bicpCi0gICAgICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBkZWNpbWFsVmFsdWUg
fTsKKyAgICAgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IHN0YXRpY19jYXN0PGRv
dWJsZT4oZGVjaW1hbFZhbHVlKSB9OwogCiAgICAgICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGln
aXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmNwcAppbmRl
eCA2MTY4ZmVlOTY2Y2I2NWM1NmNkNjY1NTU2NjZjZjU0YmZkYjcyOWJkLi4yN2QyYjdiNzQxYTdk
ZjVmYTY3ODlkNzJlODIyMWRmNDg4M2I3NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5jcHAKQEAgLTYxLDIxICs2MSwyMSBAQCBjb25zdCB1aW50
OF90KiBDYWNoZVBheWxvYWQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KG1fZGF0YSwKICAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRh
dGEpIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKCkpOwotICAgICAgICB9LAotICAgICAgICBbXShjb25zdCBzdGQ6OnBhaXI8TWFsbG9j
UHRyPHVpbnQ4X3QsIFZNTWFsbG9jPiwgc2l6ZV90PiYgZGF0YSkgeworICAgICAgICB9LCBbXShj
b25zdCBzdGQ6OnBhaXI8TWFsbG9jUHRyPHVpbnQ4X3QsIFZNTWFsbG9jPiwgc2l6ZV90PiYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZmlyc3QuZ2V0
KCk7Ci0gICAgICAgIH0pOworICAgICAgICB9CisgICAgKTsKIH0KIAogc2l6ZV90IENhY2hlUGF5
bG9hZDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9kYXRhLAot
ICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeworICAg
ICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gc2l6ZV90
IHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLnNpemUoKTsKLSAgICAgICAgfSwKLSAgICAgICAg
W10oY29uc3Qgc3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90LCBWTU1hbGxvYz4sIHNpemVfdD4m
IGRhdGEpIHsKKyAgICAgICAgfSwgW10oY29uc3Qgc3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90
LCBWTU1hbGxvYz4sIHNpemVfdD4mIGRhdGEpIC0+IHNpemVfdCB7CiAgICAgICAgICAgICByZXR1
cm4gZGF0YS5zZWNvbmQ7Ci0gICAgICAgIH0pOworICAgICAgICB9CisgICAgKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZVVwZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVVw
ZGF0ZS5jcHAKaW5kZXggNzBkMzZiMzg1YWI1YjJmODkwYTk2NzMwOWMzYzRhZDA3MTk3ZGRhMy4u
NjA3MTU0MzEwNWUzZDk0NTZkM2Q0Mjk4MWI4MzFkYWE3NjZlYzU0OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVVcGRhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlVXBkYXRlLmNwcApAQCAtMzksMTEgKzM5LDggQEAg
Q2FjaGVVcGRhdGU6OkNhY2hlVXBkYXRlKEZ1bmN0aW9uVXBkYXRlJiYgdXBkYXRlKQogfQogCiBD
YWNoZVVwZGF0ZTo6Q2FjaGVVcGRhdGUoQ2FjaGVVcGRhdGUmJiBvdGhlcikKKyAgICA6IG1fdXBk
YXRlKFdURk1vdmUob3RoZXIubV91cGRhdGUpKQogewotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEdsb2JhbFVwZGF0ZT4ob3RoZXIubV91cGRhdGUpKQotICAgICAgICBuZXcgKHRoaXMp
IENhY2hlVXBkYXRlKFdURk1vdmUoV1RGOjpnZXQ8R2xvYmFsVXBkYXRlPihvdGhlci5tX3VwZGF0
ZSkpKTsKLSAgICBlbHNlCi0gICAgICAgIG5ldyAodGhpcykgQ2FjaGVVcGRhdGUoV1RGTW92ZShX
VEY6OmdldDxGdW5jdGlvblVwZGF0ZT4ob3RoZXIubV91cGRhdGUpKSk7CiB9CiAKIENhY2hlVXBk
YXRlJiBDYWNoZVVwZGF0ZTo6b3BlcmF0b3I9KENhY2hlVXBkYXRlJiYgb3RoZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9MaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5oIGIvU291
cmNlL1dURi93dGYvTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQuaAppbmRleCAwMjEwZjk0
MjhlNmNlNDJmM2UyZGFmZDAyODA3MGMxZmNkYjk0Yzc3Li43NDQyYTQzMWEzODlkYWEyZDIwZjA1
MjY3Y2Q5MTRlYzBlMmVhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9MaWtlbHlEZW5z
ZVVuc2lnbmVkSW50ZWdlclNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xpa2VseURlbnNlVW5z
aWduZWRJbnRlZ2VyU2V0LmgKQEAgLTIwNSw4ICsyMDUsOCBAQCBwdWJsaWM6CiAgICAgICAgIElu
ZGV4VHlwZSBvcGVyYXRvciooKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihtX3VuZGVybHlpbmcsCi0gICAgICAgICAgICAgICAgWyZdKGNvbnN0IEJp
dFZlY3Rvcjo6aXRlcmF0b3ImIGl0KSB7IHJldHVybiAqaXQgKyBtX3NoaWZ0OyB9LAotICAgICAg
ICAgICAgICAgIFtdKGNvbnN0IHR5cGVuYW1lIFNldDo6aXRlcmF0b3ImIGl0KSB7IHJldHVybiAq
aXQ7IH0pOworICAgICAgICAgICAgICAgIFsmXShjb25zdCBCaXRWZWN0b3I6Oml0ZXJhdG9yJiBp
dCkgLT4gSW5kZXhUeXBlIHsgcmV0dXJuICppdCArIG1fc2hpZnQ7IH0sCisgICAgICAgICAgICAg
ICAgW10oY29uc3QgdHlwZW5hbWUgU2V0OjppdGVyYXRvciYgaXQpIC0+IEluZGV4VHlwZSB7IHJl
dHVybiAqaXQ7IH0pOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Zhcmlh
bnQuaCBiL1NvdXJjZS9XVEYvd3RmL1ZhcmlhbnQuaAppbmRleCAzY2E3ZWJmZTlkMDQ3OTZkMGI4
YTA1NjczY2NhMGZlMzE4ZTAyZDMyLi41MDNkOTE1ZmVhZTAxZDEzYTFiNTNmZGJmNDU4YmE2MGZk
OGIwNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgKKysrIGIvU291cmNl
L1dURi93dGYvVmFyaWFudC5oCkBAIC0yMzgsMTcgKzIzOCwxNyBAQCBjb25zdGV4cHIgY29uc3Qg
dHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LCBfVHlwZXMuLi4+OjpfX3R5cGUgJiYKIGdl
dChWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QgJiYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlw
ZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlw
ZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiYpOworY29uc3RleHByIHN0ZDo6YWRkX3BvaW50
ZXJfdDxfVHlwZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiopOwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50
ZXJfdDxfVHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYpOworY29u
c3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5
cGVzLi4uPiBjb25zdCopOwogCiB0ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4u
LiBfVHlwZXM+Ci1jb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PHR5cGVuYW1lIF9faW5kZXhl
ZF90eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4u
Lj4mKTsKK2NvbnN0ZXhwciBzdGQ6OmFkZF9wb2ludGVyX3Q8dHlwZW5hbWUgX19pbmRleGVkX3R5
cGU8X0luZGV4LCBfVHlwZXMuLi4+OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4q
KTsKIAogdGVtcGxhdGU8cHRyZGlmZl90IF9JbmRleCx0eXBlbmFtZSAuLi4gX1R5cGVzPgogY29u
c3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgs
X1R5cGVzLi4uPjo6X190eXBlIGNvbnN0PiBnZXRfaWYoCi0gICAgVmFyaWFudDxfVHlwZXMuLi4+
IGNvbnN0Jik7CisgICAgVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0Kik7CiAKIHRlbXBsYXRlPHB0
cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4KIHN0cnVjdCBfX3ZhcmlhbnRfYWNj
ZXNzb3I7CkBAIC0xODIyLDI2ICsxODIyLDI2IEBAIGNvbnN0ZXhwciBjb25zdCB0eXBlbmFtZSBf
X2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlJiYgZ2V0KFZhcmlhbnQ8CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+Ci1jb25zdGV4
cHIgc3RkOjphZGRfcG9pbnRlcl90PF9UeXBlPiBnZXRfaWYoVmFyaWFudDxfVHlwZXMuLi4+JiBf
X3YpewotICAgIHJldHVybiAoX190eXBlX2luZGV4PF9UeXBlLF9UeXBlcy4uLj46Ol9fdmFsdWUh
PV9fdi5pbmRleCgpKT9udWxscHRyOnN0ZDo6YWRkcmVzc29mKGdldDxfVHlwZT4oX192KSk7Citj
b25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PF9UeXBlPiBnZXRfaWYoVmFyaWFudDxfVHlwZXMu
Li4+KiBfX3YpIHsKKyAgICByZXR1cm4gKF9fdHlwZV9pbmRleDxfVHlwZSwgX1R5cGVzLi4uPjo6
X192YWx1ZSAhPSBfX3YtPmluZGV4KCkpID8gbnVsbHB0ciA6IHN0ZDo6YWRkcmVzc29mKGdldDxf
VHlwZT4oKl9fdikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4g
X1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZSBjb25zdD4gZ2V0X2lm
KFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYgX192KXsKLSAgICByZXR1cm4gKF9fdHlwZV9pbmRl
eDxfVHlwZSxfVHlwZXMuLi4+OjpfX3ZhbHVlIT1fX3YuaW5kZXgoKSk/bnVsbHB0cjpzdGQ6OmFk
ZHJlc3NvZihnZXQ8X1R5cGU+KF9fdikpOworY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxf
VHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCogX192KSB7CisgICAg
cmV0dXJuIChfX3R5cGVfaW5kZXg8X1R5cGUsIF9UeXBlcy4uLj46Ol9fdmFsdWUgIT0gX192LT5p
bmRleCgpKSA/IG51bGxwdHIgOiBzdGQ6OmFkZHJlc3NvZihnZXQ8X1R5cGU+KCpfX3YpKTsKIH0K
IAogdGVtcGxhdGU8cHRyZGlmZl90IF9JbmRleCx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3Rl
eHByIHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5
cGVzLi4uPjo6X190eXBlPiBnZXRfaWYoVmFyaWFudDxfVHlwZXMuLi4+JiBfX3YpewotICAgIHJl
dHVybiAoKF9JbmRleCE9X192LmluZGV4KCkpP251bGxwdHI6Ci0gICAgICAgIHN0ZDo6YWRkcmVz
c29mKF9fdmFyaWFudF9hY2Nlc3NvcjxfSW5kZXgsX1R5cGVzLi4uPjo6Z2V0KF9fdikpKTsKK2Nv
bnN0ZXhwciBzdGQ6OmFkZF9wb2ludGVyX3Q8dHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4
LCBfVHlwZXMuLi4+OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4qIF9fdikgewor
ICAgIHJldHVybiAoKF9JbmRleCAhPSBfX3YtPmluZGV4KCkpID8gbnVsbHB0ciA6CisgICAgICAg
IHN0ZDo6YWRkcmVzc29mKF9fdmFyaWFudF9hY2Nlc3NvcjxfSW5kZXgsIF9UeXBlcy4uLj46Omdl
dCgqX192KSkpOwogfQogCiB0ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBf
VHlwZXM+Ci1jb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PHR5cGVuYW1lIF9faW5kZXhlZF90
eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5cGUgY29uc3Q+IGdldF9pZigKLSAgICBWYXJpYW50
PF9UeXBlcy4uLj4gY29uc3QmIF9fdil7Ci0gICAgcmV0dXJuICgoX0luZGV4IT1fX3YuaW5kZXgo
KSk/bnVsbHB0cjoKLSAgICAgICAgc3RkOjphZGRyZXNzb2YoX192YXJpYW50X2FjY2Vzc29yPF9J
bmRleCxfVHlwZXMuLi4+OjpnZXQoX192KSkpOworY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJf
dDx0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsIF9UeXBlcy4uLj46Ol9fdHlwZSBjb25z
dD4gZ2V0X2lmKAorICAgIFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCogX192KSB7CisgICAgcmV0
dXJuICgoX0luZGV4ICE9IF9fdi0+aW5kZXgoKSkgPyBudWxscHRyIDoKKyAgICAgICAgc3RkOjph
ZGRyZXNzb2YoX192YXJpYW50X2FjY2Vzc29yPF9JbmRleCwgX1R5cGVzLi4uPjo6Z2V0KCpfX3Yp
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4
IGUxOTA0ZGJiNzZhZDIwMmNjNjNmNmEyNjdmODBlOTRlZTE5NjdiNjYuLjI1OTE0YjQwYmIyMzgz
YTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMjksMjIgKzEyOSwyMiBAQCBib29sIHF1
ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYg
dXJsLCBib29sIGhhc1ZhcgogCiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHks
IFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNl
Qm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwg
W10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXItPmNvcHkoKTsKLSAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKKyAg
ICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAg
IHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKIH0KIAog
UmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBm
b3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgeworICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwotICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeworICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90
JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNw
b25zZUJvZHkgeyB9OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBlZjZkYTA0OTg5OGViYWQ4MWU2Nzc1ODFmMGQx
MmJkMzM4ZjYxMjUzLi44ODRjOGI4NzgzOTE5OTBjMzc3NWMyMWM4M2MwMTExM2NjMDgxYTVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApA
QCAtMzg4LDkgKzM4OCw5IEBAIFJlc291cmNlRXJyb3IgRmV0Y2hCb2R5T3duZXI6OmxvYWRpbmdF
cnJvcigpIGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBGZXRjaEJvZHlPd25lcjo6
bG9hZGluZ0V4Y2VwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9s
b2FkaW5nRXJyb3IsIFtdKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9sb2FkaW5nRXJyb3IsIFtdKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSAtPiBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gewogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgVHlwZUVycm9yLCBlcnJvci5zYW5pdGl6ZWREZXNjcmlwdGlvbigpIH07Ci0gICAgfSwg
W10oY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pIHsKKyAgICB9LCBbXShjb25zdCBFeGNlcHRp
b24mIGV4Y2VwdGlvbikgLT4gc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IHsKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbiB9OwogICAgIH0sIFtdKGF1dG8mJikgLT4gc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+IHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggNTRl
NzhiYWNiZmI1OWE2YjRkNmFjYzNiM2RlYmRlOTdiYjhhMjZjNC4uOWFmZGQ5ZTBjMGJjY2MwNWVl
Y2NhYWQ1NDliMGE3Yzc1YzlkMGUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTIwNiw5ICsyMDYsOSBAQCB1aW50NjRfdCBJREJS
ZXF1ZXN0Ojpzb3VyY2VPYmplY3RTdG9yZUlkZW50aWZpZXIoKSBjb25zdAogICAgICAgICByZXR1
cm4gMDsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLnZhbHVlKCksCi0gICAg
ICAgIFtdIChjb25zdCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+JiBvYmplY3RTdG9yZSkgeyByZXR1
cm4gb2JqZWN0U3RvcmUtPmluZm8oKS5pZGVudGlmaWVyKCk7IH0sCi0gICAgICAgIFtdIChjb25z
dCBSZWZQdHI8SURCSW5kZXg+JiBpbmRleCkgeyByZXR1cm4gaW5kZXgtPmluZm8oKS5vYmplY3RT
dG9yZUlkZW50aWZpZXIoKTsgfSwKLSAgICAgICAgW10gKGNvbnN0IFJlZlB0cjxJREJDdXJzb3I+
JikgeyByZXR1cm4gMDsgfQorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiYgb2JqZWN0U3RvcmUpIC0+IHVpbnQ2NF90IHsgcmV0dXJuIG9iamVjdFN0b3JlLT5pbmZvKCku
aWRlbnRpZmllcigpOyB9LAorICAgICAgICBbXSAoY29uc3QgUmVmUHRyPElEQkluZGV4PiYgaW5k
ZXgpIC0+IHVpbnQ2NF90IHsgcmV0dXJuIGluZGV4LT5pbmZvKCkub2JqZWN0U3RvcmVJZGVudGlm
aWVyKCk7IH0sCisgICAgICAgIFtdIChjb25zdCBSZWZQdHI8SURCQ3Vyc29yPiYpIC0+IHVpbnQ2
NF90IHsgcmV0dXJuIDA7IH0KICAgICApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAppbmRleCBk
MDljYjdkYTViYzg2Zjc5ZTMzZmU0OTE5ZjQ5N2QwZGRhZDdkZjYwLi5kMmFlMDA1MzBhMjQ1YTRk
MmIyYzU2NGMxOTY2NTU3YTg1MWVjZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKQEAgLTY4MSwx
MyArNjgxLDEzIEBAIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OnNob3dNZWRpYUNvbnRyb2xzQ29u
dGV4dE1lbnUoSFRNTEVsZW1lbnQmIHRhcmdldCwgU3RyaW5nCiAjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgICAgICAgICAgWyZdIChSZWZQdHI8QXVkaW9UcmFj
az4mIHNlbGVjdGVkQXVkaW9UcmFjaykgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdHJh
Y2sgOiBpZE1hcC52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYXVk
aW9UcmFjayA9IFdURjo6Z2V0X2lmPFJlZlB0cjxBdWRpb1RyYWNrPj4odHJhY2spKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoYXV0byogYXVkaW9UcmFjayA9IFdURjo6Z2V0X2lmPFJlZlB0cjxB
dWRpb1RyYWNrPj4oJnRyYWNrKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgqYXVkaW9UcmFj
ayktPnNldEVuYWJsZWQoKmF1ZGlvVHJhY2sgPT0gc2VsZWN0ZWRBdWRpb1RyYWNrKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgWyZdIChSZWZQdHI8VGV4
dFRyYWNrPiYgc2VsZWN0ZWRUZXh0VHJhY2spIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IHRyYWNrIDogaWRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IHRleHRUcmFjayA9IFdURjo6Z2V0X2lmPFJlZlB0cjxUZXh0VHJhY2s+Pih0cmFjaykpCisgICAg
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiB0ZXh0VHJhY2sgPSBXVEY6OmdldF9pZjxSZWZQdHI8
VGV4dFRyYWNrPj4oJnRyYWNrKSkKICAgICAgICAgICAgICAgICAgICAgICAgICgqdGV4dFRyYWNr
KS0+c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50LnNldFNlbGVjdGVkVGV4dFRyYWNrKHNlbGVj
dGVkVGV4dFRyYWNrLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggM2M3NmM1N2E4YjczNWRi
MGU1YjE4OGNmMmU0NmZjZTJmOWE5ZTM1MS4uZmUxYTAxZWRjZGY5ZDgwYWUwZTUyNzgyOGNjNjkx
YmQyOTIzNTQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJU
Q1BlZXJDb25uZWN0aW9uOjphZGRJY2VDYW5kaWRhdGUoQ2FuZGlkYXRlJiYgcnRjQ2FuZGlkYXRl
LCBSZWY8RGVmZXJyZWRQcgogICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBleGNlcHRpb247
CiAgICAgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4gY2FuZGlkYXRlOwogICAgIGlmIChydGNDYW5k
aWRhdGUpIHsKLSAgICAgICAgY2FuZGlkYXRlID0gc3dpdGNoT24oKnJ0Y0NhbmRpZGF0ZSwgWyZl
eGNlcHRpb25dKFJUQ0ljZUNhbmRpZGF0ZUluaXQmIGluaXQpIC0+IFJlZlB0cjxSVENJY2VDYW5k
aWRhdGU+IHsKKyAgICAgICAgY2FuZGlkYXRlID0gV1RGOjpzd2l0Y2hPbigqcnRjQ2FuZGlkYXRl
LCBbJmV4Y2VwdGlvbl0oUlRDSWNlQ2FuZGlkYXRlSW5pdCYgaW5pdCkgLT4gUmVmUHRyPFJUQ0lj
ZUNhbmRpZGF0ZT4gewogICAgICAgICAgICAgaWYgKGluaXQuY2FuZGlkYXRlLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCmluZGV4IGRhZjg5
N2VhNDcyMTg2ZDZjYzdiN2FkNjIyZGZmNjZmYTYxNzc1NmIuLjAxZjBlMDFjYmQ0NWNjNjIyNzU1
MTRiMDZhZjMzZTk5ZDI2MDI3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgUlRD
UnRwVHJhbnNmb3JtOjp+UlRDUnRwVHJhbnNmb3JtKCkKIAogYm9vbCBSVENSdHBUcmFuc2Zvcm06
OmlzQXR0YWNoZWQoKSBjb25zdAogewotICAgIHJldHVybiBzd2l0Y2hPbihtX3RyYW5zZm9ybSwg
WyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0p
IHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0
cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKICAgICAgICAgcmV0
dXJuIHNmcmFtZVRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpOwogICAgIH0sIFsmXShjb25zdCBSZWZQ
dHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CiAgICAgICAgIHJl
dHVybiBzY3JpcHRUcmFuc2Zvcm0tPmlzQXR0YWNoZWQoKTsKQEAgLTEzMSwxNCArMTMxLDE0IEBA
IHZvaWQgUlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVyKFJUQ1J0cFNlbmRlciYpCiAK
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mIGEsIGNvbnN0IFJUQ1J0cFRy
YW5zZm9ybSYgYikKIHsKLSAgICByZXR1cm4gc3dpdGNoT24oYS5tX3RyYW5zZm9ybSwgWyZdKGNv
bnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm1BKSB7Ci0g
ICAgICAgIHJldHVybiBzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybUIpIHsKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihhLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybUEpIHsKKyAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+
JiBzZnJhbWVUcmFuc2Zvcm1CKSB7CiAgICAgICAgICAgICByZXR1cm4gc2ZyYW1lVHJhbnNmb3Jt
QS5nZXQoKSA9PSBzZnJhbWVUcmFuc2Zvcm1CLmdldCgpOwogICAgICAgICB9LCBbJl0oY29uc3Qg
UmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0pOwogICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJh
bnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtQSkgewotICAgICAgICByZXR1cm4gc3dpdGNoT24oYi5t
X3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+Jikgewor
ICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVm
UHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2Ny
aXB0VHJhbnNmb3JtQikgewogICAgICAgICAgICAgcmV0dXJuIHNjcmlwdFRyYW5zZm9ybUEuZ2V0
KCkgPT0gc2NyaXB0VHJhbnNmb3JtQi5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKaW5kZXggZDAwNzE4MmFlMTc2MjQwMTQ1YmY0ZjIxMGRj
MmQ4ZjlmYWUxMTkzYS4uYzk5OTIyMDNhNWJkNWQxNzkyOTlhZjg3Njk1ODVhMmUyMTYyZWVmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAg
LTU5LDE3ICs1OSw2IEBAIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6On5MaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kKCkKICAgICBzdG9wU291cmNlKCk7CiB9CiAKLXN0YXRpYyBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6U291cmNlJiBhLCBjb25zdCBM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpTb3VyY2UmIGIpCi17Ci0gICAgcmV0dXJuIHN3aXRj
aE9uKGEsIFsmYl0oY29uc3QgUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4mIHNvdXJj
ZSkgewotICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlPj4oYikgJiYgc291cmNlLnB0cigpID09IFdURjo6Z2V0PFJlZjxS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+PihiKS5wdHIoKTsKLSAgICB9LCBbJmJdKGNvbnN0
IFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAgICAgcmV0
dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZT4+KGIpICYmIHNvdXJjZS5wdHIoKSA9PSBXVEY6OmdldDxSZWY8UmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlPj4oYikucHRyKCk7Ci0gICAgfSwgWyZiXShzdGQ6Om51bGxwdHJfdCkgewotICAg
ICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJfdD4oYik7Ci0g
ICAgfSk7Ci19Ci0KIHZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c3RhcnRTb3VyY2Uo
KQogewogICAgIC8vIFdlIGFzeW5jaHJvbm91c2x5IHN0YXJ0IHRoZSBzb3VyY2VzIHRvIGd1YXJh
bnRlZSBtZWRpYSBnb2VzIHRocm91Z2ggdGhlIHRyYW5zZm9ybSBpZiBhIHRyYW5zZm9ybSBpcyBz
ZXQgd2hlbiBjcmVhdGluZyB0aGUgdHJhY2suCkBAIC0xODQsNyArMTczLDcgQEAgdm9pZCBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRNZWRpYVN0cmVhbUlkcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc3RyZWFtSWQKIAogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKiBMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjp2aWRlb1NvdXJjZSgpCiB7Ci0gICAgcmV0dXJuIHN3aXRjaE9uKG1f
c291cmNlLAorICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLAogICAgICAgICBbXShS
ZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiYgc291cmNlKSB7IHJldHVybiBzb3VyY2Uu
cHRyKCk7IH0sCiAgICAgICAgIFtdKGNvbnN0IGF1dG8mKSAtPiBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UqIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICApOwpAQCAtMTkyLDcgKzE4MSw3IEBA
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6
dmlkZW9Tb3VyY2UoKQogCiBib29sIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6Omhhc1NvdXJj
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXRjaE9uKG1fc291cmNlLAorICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fc291cmNlLAogICAgICAgICBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYp
IHsgcmV0dXJuIGZhbHNlOyB9LAogICAgICAgICBbXShjb25zdCBhdXRvJikgeyByZXR1cm4gdHJ1
ZTsgfQogICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNw
cAppbmRleCA3ZTdmNjlkYzVhODU2OWI0NjM3NDFlNjcwNGQ1YWU2NjAwM2FlODU1Li5jZDcxYjM5
MTE1Nzg1NTliOWFmYmQ0MzgzODQ2MjEyNDNiZDU5MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9zZShjb25z
dCBEb2N1bWVudCYgZAogICAgICAgICBhdXRvIHRyYW5zZm9ybSA9IFdlYlhSUmlnaWRUcmFuc2Zv
cm06OmNyZWF0ZShwb3NlLT50cmFuc2Zvcm0oKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldCk7CiAK
ICAgICAgICAgLy8gU2V0IHByb2plY3Rpb24gbWF0cml4IGZvciBlYWNoIHZpZXcKLSAgICAgICAg
c3RkOjphcnJheTxmbG9hdCwgMTY+IHByb2plY3Rpb24gPSBzd2l0Y2hPbihmcmFtZURhdGEudmll
d3NbaW5kZXhdLnByb2plY3Rpb24sIFsmXShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6Rm92JiBmb3YpIHsKKyAgICAgICAgc3RkOjphcnJheTxmbG9hdCwgMTY+IHByb2plY3Rp
b24gPSBXVEY6OnN3aXRjaE9uKGZyYW1lRGF0YS52aWV3c1tpbmRleF0ucHJvamVjdGlvbiwgWyZd
KGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3YmIGZvdikgewogICAgICAg
ICAgICAgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7
CiAgICAgICAgICAgICBkb3VibGUgZmFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRo
RmFyKCk7CiAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9q
ZWN0aW9uKGZvdi51cCwgZm92LmRvd24sIGZvdi5sZWZ0LCBmb3YucmlnaHQsIG5lYXIsIGZhciku
dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJXZWJHTExheWVyLmNwcAppbmRleCA3OGIxNWNiOGIwN2IyYzBlM2MxMGQ4MWM3
NTdiZWFjNzZjMTUzMDczLi5mM2FiN2UxYjE5M2FiN2E4ZTg4N2FhNmRhMWU1YWU0YjZkNzU5ZDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIu
Y3BwCkBAIC0yNzMsNyArMjczLDcgQEAgSFRNTENhbnZhc0VsZW1lbnQqIFdlYlhSV2ViR0xMYXll
cjo6Y2FudmFzKCkgY29uc3QKICAgICAgICAgYXV0byBjYW52YXMgPSBiYXNlQ29udGV4dC0+Y2Fu
dmFzKCk7CiAgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNhbnZhcywgW10oY29uc3QgUmVm
UHRyPEhUTUxDYW52YXNFbGVtZW50PiYgY2FudmFzKSB7CiAgICAgICAgICAgICByZXR1cm4gY2Fu
dmFzLmdldCgpOwotICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPikg
eworICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPikgLT4gSFRNTENh
bnZhc0VsZW1lbnQqIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgiYmFzZUxheWVy
IG9mIGEgV2ViWFJXZWJHTExheWVyIG11c3QgYmUgYW4gSFRNTENhbnZhc0VsZW1lbnQiKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5jcHAKaW5kZXggZWJhNTE5MjcyNjJkY2I0NTNjYzIzNDg4MGIzN2U5Nzk0MDE2ZmZjMC4u
YzcxNmIzYjdmZTFlYjJkYzM0OTRiNjU5N2I1NzMwYzFjNDgwYTUzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5jcHAKQEAgLTc4MSw3ICs3ODEsNyBAQCBJbnRQb2ludCBBWElzb2xhdGVkT2Jq
ZWN0OjppbnRQb2ludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
YwogewogICAgIGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAgICAgICBbXSAoSW50UG9pbnQmIHR5
cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChJbnRQb2ludCYg
dHlwZWRWYWx1ZSkgLT4gSW50UG9pbnQgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKICAgICAgICAg
W10gKGF1dG8mKSB7IHJldHVybiBJbnRQb2ludCgpOyB9CiAgICAgKTsKIH0KQEAgLTc5MCw3ICs3
OTAsNyBAQCBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6Om9iamVjdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogewogICAgIGF1dG8gdmFsdWUgPSBtX3By
b3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIEFYSUQgbm9kZUlEID0gV1RGOjpzd2l0
Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKEFYSUQmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWU7IH0sCisgICAgICAgIFtdIChBWElEJiB0eXBlZFZhbHVlKSAtPiBBWElEIHsgcmV0dXJu
IHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gSW52YWxpZEFYSUQ7
IH0KICAgICApOwogCkBAIC04MDIsNyArODAyLDcgQEAgVCBBWElzb2xhdGVkT2JqZWN0OjpyZWN0
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAg
IGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAgICAgICBbXSAoVCYgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKFQmIHR5cGVkVmFsdWUpIC0+IFQgeyByZXR1
cm4gdHlwZWRWYWx1ZTsgfSwKICAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBUIHsgfTsgfQog
ICAgICk7CiB9CkBAIC04MTIsNyArODEyLDcgQEAgVmVjdG9yPFQ+IEFYSXNvbGF0ZWRPYmplY3Q6
OnZlY3RvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY28KIHsK
ICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKFZlY3RvcjxUPiYgdHlwZWRW
YWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKFZlY3RvcjxUPiYgdHlw
ZWRWYWx1ZSkgLT4gVmVjdG9yPFQ+IHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtd
IChhdXRvJikgeyByZXR1cm4gVmVjdG9yPFQ+KCk7IH0KICAgICApOwogfQpAQCAtODIyLDcgKzgy
Miw3IEBAIE9wdGlvblNldDxUPiBBWElzb2xhdGVkT2JqZWN0OjpvcHRpb25TZXRBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJv
cGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFs
dWUsCi0gICAgICAgIFtdIChUJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAor
ICAgICAgICBbXSAoVCYgdHlwZWRWYWx1ZSkgLT4gT3B0aW9uU2V0PFQ+IHsgcmV0dXJuIHR5cGVk
VmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gT3B0aW9uU2V0PFQ+KCk7IH0K
ICAgICApOwogfQpAQCAtODMyLDcgKzgzMiw3IEBAIHN0ZDo6cGFpcjxULCBUPiBBWElzb2xhdGVk
T2JqZWN0OjpwYWlyQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiB7
CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtdIChzdGQ6OnBhaXI8VCwgVD4m
IHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChzdGQ6OnBh
aXI8VCwgVD4mIHR5cGVkVmFsdWUpIC0+IHN0ZDo6cGFpcjxULCBUPiB7IHJldHVybiB0eXBlZFZh
bHVlOyB9LAogICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIHN0ZDo6cGFpcjxULCBUPigwLCAx
KTsgfQogICAgICk7CiB9CkBAIC04NDEsOCArODQxLDggQEAgdWludDY0X3QgQVhJc29sYXRlZE9i
amVjdDo6dWludDY0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBj
b24KIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKHVpbnQ2NF90JiB0
eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAotICAgICAgICBbXSAoYXV0byYpIHsg
cmV0dXJuIDA7IH0KKyAgICAgICAgW10gKHVpbnQ2NF90JiB0eXBlZFZhbHVlKSAtPiB1aW50NjRf
dCB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoYXV0byYpIC0+IHVpbnQ2NF90
IHsgcmV0dXJuIDA7IH0KICAgICApOwogfQogCkBAIC04NTAsNyArODUwLDcgQEAgVVJMIEFYSXNv
bGF0ZWRPYmplY3Q6OnVybEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVydHlO
YW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKFVSTCYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKFVSTCYgdHlw
ZWRWYWx1ZSkgLT4gVVJMIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRv
JikgeyByZXR1cm4gVVJMKCk7IH0KICAgICApOwogfQpAQCAtODU5LDcgKzg1OSw3IEBAIFBhdGgg
QVhJc29sYXRlZE9iamVjdDo6cGF0aEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJv
cGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10g
KFBhdGgmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChQ
YXRoJiB0eXBlZFZhbHVlKSAtPiBQYXRoIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAg
IFtdIChhdXRvJikgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgKTsKIH0KQEAgLTg2OCw3ICs4Njgs
NyBAQCBDb2xvciBBWElzb2xhdGVkT2JqZWN0Ojpjb2xvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0
eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwK
LSAgICAgICAgW10gKENvbG9yJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAor
ICAgICAgICBbXSAoQ29sb3ImIHR5cGVkVmFsdWUpIC0+IENvbG9yIHsgcmV0dXJuIHR5cGVkVmFs
dWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gQ29sb3IoKTsgfQogICAgICk7CiB9
CkBAIC04NzcsOCArODc3LDggQEAgZmxvYXQgQVhJc29sYXRlZE9iamVjdDo6ZmxvYXRBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2
YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtdIChmbG9hdCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4g
dHlwZWRWYWx1ZTsgfSwKLSAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwOyB9CisgICAgICAg
IFtdIChmbG9hdCYgdHlwZWRWYWx1ZSkgLT4gZmxvYXQgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwK
KyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwLjBmOyB9CiAgICAgKTsKIH0KIApAQCAtODg2
LDggKzg4Niw4IEBAIGRvdWJsZSBBWElzb2xhdGVkT2JqZWN0Ojpkb3VibGVBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9
IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24odmFsdWUsCi0gICAgICAgIFtdIChkb3VibGUmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWU7IH0sCi0gICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gMDsgfQorICAgICAgICBbXSAo
ZG91YmxlJiB0eXBlZFZhbHVlKSAtPiBkb3VibGUgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAg
ICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwLjA7IH0KICAgICApOwogfQogCkBAIC04OTUsOCAr
ODk1LDggQEAgdW5zaWduZWQgQVhJc29sYXRlZE9iamVjdDo6dW5zaWduZWRBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGMKIHsKICAgICBhdXRvIHZhbHVlID0gbV9w
cm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2
YWx1ZSwKLSAgICAgICAgW10gKHVuc2lnbmVkJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZh
bHVlOyB9LAotICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgW10gKHVu
c2lnbmVkJiB0eXBlZFZhbHVlKSAtPiB1bnNpZ25lZCB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAor
ICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIDB1OyB9CiAgICAgKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKaW5kZXggNTc0NWUyYTRmZTc5NzBjZTRkZjM1MTJmMGEwNjgyOGUw
NjBkM2FiYy4uYzhiNzU3YzlmYzZhNTI0ZmYxNmNmNjBjYzY2ZWU5MGFhMGFjNTA0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3Rm
L0JyaWdhbmQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xBbnkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydFdlYkdMLmNwcAppbmRleCBkZDI5Njg4YzJiYzZjODgwMDU0ZTE4N2YxZDMwOWFh
ODkwNjJlODg2Li45MjJhYTcxMzdmOTQ1MjI0MDBiYTkwY2Q5N2U3ZTg1ZjUyOWFlYjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCkBA
IC04MCw0OSArODAsMzkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpTVmFsdWUgY29udmVydFRv
SlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgV2ViR0xBbnkmIGFueSkKIHsKICAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihhbnksCi0gICAgICAgIFtdIChzdGQ6Om51bGxwdHJfdCkgeworICAgICAg
ICBbXSAoc3RkOjpudWxscHRyX3QpIC0+IEpTVmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOwotICAgICAgICB9LAotICAgICAgICBbXSAoYm9vbCB2YWx1ZSkgeworICAgICAgICB9
LCBbXSAoYm9vbCB2YWx1ZSkgLT4gSlNWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4ganNCb29s
ZWFuKHZhbHVlKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10gKGludCB2YWx1ZSkgeworICAgICAg
ICB9LCBbXSAoaW50IHZhbHVlKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgICAgIHJldHVybiBqc051
bWJlcih2YWx1ZSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdICh1bnNpZ25lZCB2YWx1ZSkgewor
ICAgICAgICB9LCBbXSAodW5zaWduZWQgdmFsdWUpIC0+IEpTVmFsdWUgewogICAgICAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10gKGxvbmcgbG9u
ZyB2YWx1ZSkgeworICAgICAgICB9LCBbXSAobG9uZyBsb25nIHZhbHVlKSAtPiBKU1ZhbHVlIHsK
ICAgICAgICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7Ci0gICAgICAgIH0sCi0gICAgICAg
IFtdIChmbG9hdCB2YWx1ZSkgeworICAgICAgICB9LCBbXSAoZmxvYXQgdmFsdWUpIC0+IEpTVmFs
dWUgewogICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgfSwKLSAg
ICAgICAgWyZdIChjb25zdCBTdHJpbmcmIHZhbHVlKSB7CisgICAgICAgIH0sIFsmXSAoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgLT4gSlNWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmdX
aXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCB2YWx1ZSk7Ci0gICAgICAgIH0sCi0g
ICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGJvb2w+JiB2YWx1ZXMpIHsKKyAgICAgICAgfSwgWyZd
IChjb25zdCBWZWN0b3I8Ym9vbD4mIHZhbHVlcykgLT4gSlNWYWx1ZSB7CiAgICAgICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwogICAgICAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6
IHZhbHVlcykKICAgICAgICAgICAgICAgICBsaXN0LmFwcGVuZChqc0Jvb2xlYW4odmFsdWUpKTsK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsaXN0Lmhhc092ZXJmbG93ZWQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoJmdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
SlNDOjpBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIGxpc3QpOwotICAgICAgICB9
LAotICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxpbnQ+JiB2YWx1ZXMpIHsKKyAgICAgICAgfSwg
WyZdIChjb25zdCBWZWN0b3I8aW50PiYgdmFsdWVzKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHZhbHVl
IDogdmFsdWVzKQogICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzTnVtYmVyKHZhbHVlKSk7
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbGlzdC5oYXNPdmVyZmxvd2VkKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KCZnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0
PEpTQzo6QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBsaXN0KTsKLSAgICAgICAg
fSwKLSAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiB2YWx1ZXMpIHsKKyAgICAg
ICAgfSwgWyZdIChjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiB2YWx1ZXMpIC0+IEpTVmFsdWUgewog
ICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAgICAgICAgICAgIGZvciAo
YXV0byYgdmFsdWUgOiB2YWx1ZXMpCiAgICAgICAgICAgICAgICAgbGlzdC5hcHBlbmQoanNOdW1i
ZXIodmFsdWUpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsaXN0Lmhhc092ZXJmbG93
ZWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoJmdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8SlNDOjpBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIGxpc3Qp
OwotICAgICAgICB9LAotICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBh
cnJheSkgeworICAgICAgICB9LCBbJl0gKGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBhcnJh
eSkgewogICAgICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9i
YWxPYmplY3QsIGFycmF5LmdldCgpKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBS
ZWZQdHI8SW50MzJBcnJheT4mIGFycmF5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1c3RvbS5jcHAK
aW5kZXggMGJkMWQ0ZDFhZDg1NTJlZDc0M2JjYWIyZTFiOGYyYTMwZDYwNTlmMC4uZWFiZWJiMzI4
MWFlZTNlZDliMGNhYTdhYmRkMmVkMDU2YTNkYzE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50Q3Vz
dG9tLmNwcApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU0M6OkpTVmFs
dWUgSlNQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Om1ldGhvZERldGFpbHMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gY2FjaGVk
UHJvcGVydHlWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpcywgd3JhcHBlZCgpLmNhY2hl
ZE1ldGhvZERldGFpbHMoKSwgW3RoaXMsICZsZXhpY2FsR2xvYmFsT2JqZWN0XSB7Ci0gICAgICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKHdyYXBwZWQoKS5tZXRob2REZXRhaWxzKCksIFtdKEpTQzo6
SlNWYWx1ZSBtZXRob2REZXRhaWxzKSB7CisgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHdy
YXBwZWQoKS5tZXRob2REZXRhaWxzKCksIFtdKEpTQzo6SlNWYWx1ZSBtZXRob2REZXRhaWxzKSAt
PiBKU0M6OkpTVmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIG1ldGhvZERldGFpbHMgPyBtZXRo
b2REZXRhaWxzIDogSlNDOjpqc051bGwoKTsKLSAgICAgICAgfSwgWyZsZXhpY2FsR2xvYmFsT2Jq
ZWN0XShjb25zdCBQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Ok1ldGhvZERldGFpbHNGdW5jdGlv
biYgZnVuY3Rpb24pIHsKKyAgICAgICAgfSwgWyZsZXhpY2FsR2xvYmFsT2JqZWN0XShjb25zdCBQ
YXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Ok1ldGhvZERldGFpbHNGdW5jdGlvbiYgZnVuY3Rpb24p
IC0+IEpTQzo6SlNWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24obGV4aWNhbEds
b2JhbE9iamVjdCkuZ2V0KCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oCmluZGV4IGQ3ZTUy
YjFiMWQxNmQyY2IxNzIyOTQzYTJiNmUwOGRhNTI0M2QzM2YuLmU0Y2NkYmE2MmQ4NDgzYTc0MGNh
N2EwNDNkMmJhZWM5Y2M1MTZhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmFsdWVJbldyYXBwZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgKQEAgLTgyLDcgKzgyLDcgQEAgaW5saW5lIEpT
VmFsdWVJbldyYXBwZWRPYmplY3Q6Om9wZXJhdG9yIEpTQzo6SlNWYWx1ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV92YWx1ZSwgW10gKEpTQzo6SlNWYWx1ZSB2YWx1ZSkg
ewogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfSwgW10gKGNvbnN0IFdlYWsmIHZhbHVlKSB7
CisgICAgfSwgW10gKGNvbnN0IFdlYWsmIHZhbHVlKSAtPiBKU0M6OkpTVmFsdWUgewogICAgICAg
ICByZXR1cm4gdmFsdWUuZ2V0KCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ0ZWI4MTYyZWU1MGFmZGFmZjNj
NDk0OWJhZjE3YWEwMzZkMmRmNGYuLmFlYTFiOTMyYmNjMjA3YWY1NzAxYjlhOTFmYWQ0MDViM2Y5
MDg5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCkBAIC05MTgsNyArOTE4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gY29uc3VtZUZvbnRWYXJpYW50Q1NTMjEoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmEKIHN0YXRp
YyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVGb250V2VpZ2h0KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVGb250V2Vp
Z2h0UmF3KHJhbmdlKSkgewotICAgICAgICByZXR1cm4gc3dpdGNoT24oKnJlc3VsdCwgW10gKENT
U1ZhbHVlSUQgdmFsdWVJRCkgeworICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbigqcmVzdWx0
LCBbXSAoQ1NTVmFsdWVJRCB2YWx1ZUlEKSB7CiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWVJRCk7CiAgICAgICAg
IH0sIFtdIChkb3VibGUgd2VpZ2h0TnVtYmVyKSB7CiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh3ZWlnaHROdW1iZXIsIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggMzJjZmQw
ZDY3ZjM4NGIwN2FlM2Y3MGFmN2NjNmU1YjVkNTEwMWI0Yy4uZTRmMTk0YmZhMmIyZjI4OWEyZjhk
MzNkMTI5MTcyMzM3N2VlZGNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAg
LTEyOSwxNSArMTI5LDE1IEBAIEV2ZW50SW50ZXJmYWNlIE1lc3NhZ2VFdmVudDo6ZXZlbnRJbnRl
cmZhY2UoKSBjb25zdAogCiBzaXplX3QgTWVzc2FnZUV2ZW50OjptZW1vcnlDb3N0KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2RhdGEsIFtdIChjb25zdCBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0JikgeworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fZGF0YSwgW10gKGNv
bnN0IEpTVmFsdWVJbldyYXBwZWRPYmplY3QmKSAtPiBzaXplX3QgewogICAgICAgICByZXR1cm4g
MDsKLSAgICB9LCBbXSAoY29uc3QgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIGRhdGEpIHsK
KyAgICB9LCBbXSAoY29uc3QgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIGRhdGEpIC0+IHNp
emVfdCB7CiAgICAgICAgIHJldHVybiBkYXRhLT5tZW1vcnlDb3N0KCk7Ci0gICAgfSwgW10gKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7CisgICAgfSwgW10gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAt
PiBzaXplX3QgewogICAgICAgICByZXR1cm4gc3RyaW5nLnNpemVJbkJ5dGVzKCk7Ci0gICAgfSwg
W10gKGNvbnN0IFJlZjxCbG9iPiYgYmxvYikgeworICAgIH0sIFtdIChjb25zdCBSZWY8QmxvYj4m
IGJsb2IpIC0+IHNpemVfdCB7CiAgICAgICAgIHJldHVybiBibG9iLT5zaXplKCk7Ci0gICAgfSwg
W10gKGNvbnN0IFJlZjxBcnJheUJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFtdIChjb25zdCBS
ZWY8QXJyYXlCdWZmZXI+JiBidWZmZXIpIC0+IHNpemVfdCB7CiAgICAgICAgIHJldHVybiBidWZm
ZXItPmJ5dGVMZW5ndGgoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApp
bmRleCA1NjU3ODI3ZDlhNjZiYjNiNzNlZmI1NWY5MzE2MWVlODM4YjQ1YTMwLi5mMTRlOTNiZjZi
NzViMDFkNTliMWY0MjVjZWVlYTBjYjZlZTk4MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC0yMjczLDcgKzIyNzMsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAKICAgICBpZiAodW5pZmllZFRleHRD
aGVja2VyRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gZm91bmRJdGVtID0gVGV4dENoZWNraW5n
SGVscGVyKCpjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxl
ZFdvcmRPclVuZ3JhbW1hdGljYWxQaHJhc2UoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpOwot
ICAgICAgICBpZiAoYXV0byB3b3JkID0gV1RGOjpnZXRfaWY8VGV4dENoZWNraW5nSGVscGVyOjpN
aXNzcGVsbGVkV29yZD4oZm91bmRJdGVtKSkKKyAgICAgICAgaWYgKGF1dG8qIHdvcmQgPSBXVEY6
OmdldF9pZjxUZXh0Q2hlY2tpbmdIZWxwZXI6Ok1pc3NwZWxsZWRXb3JkPigmZm91bmRJdGVtKSkK
ICAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gV1RGTW92ZSgqd29yZCk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHVuZ3JhbW1hdGljYWxQaHJhc2UgPSBXVEY6OmdldDxUZXh0Q2hlY2tp
bmdIZWxwZXI6OlVuZ3JhbW1hdGljYWxQaHJhc2U+KFdURk1vdmUoZm91bmRJdGVtKSk7CkBAIC0y
MzAwLDcgKzIzMDAsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIAogICAgICAgICBpZiAodW5pZmllZFRl
eHRDaGVja2VyRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBhdXRvIGZvdW5kSXRlbSA9IFRleHRD
aGVja2luZ0hlbHBlcigqY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1p
c3NwZWxsZWRXb3JkT3JVbmdyYW1tYXRpY2FsUGhyYXNlKGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHdvcmQgPSBXVEY6OmdldF9pZjxUZXh0Q2hlY2tp
bmdIZWxwZXI6Ok1pc3NwZWxsZWRXb3JkPihmb3VuZEl0ZW0pKQorICAgICAgICAgICAgaWYgKGF1
dG8qIHdvcmQgPSBXVEY6OmdldF9pZjxUZXh0Q2hlY2tpbmdIZWxwZXI6Ok1pc3NwZWxsZWRXb3Jk
PigmZm91bmRJdGVtKSkKICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IFdURk1vdmUo
KndvcmQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHVuZ3JhbW1hdGljYWxQ
aHJhc2UgPSBXVEY6OmdldDxUZXh0Q2hlY2tpbmdIZWxwZXI6OlVuZ3JhbW1hdGljYWxQaHJhc2U+
KFdURk1vdmUoZm91bmRJdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGZjOWQ3MTU1NDM3M2ZkYzc4NWRj
YTQ2Y2ZkNWVkZjhhZjJhNTM1MjcuLmMzNzJhZWNlZjRlOTdmYjNiMWMxM2ZlZWJhYTVkNzRmMTg5
ZGNlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogaW5saW5lIGJvb2wgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6
Om1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXRj
aE9uKHJ1bGUsIFsmZWxlbWVudF0gKEVsZW1lbnRSdWxlIHJ1bGUpIHsKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihydWxlLCBbJmVsZW1lbnRdIChFbGVtZW50UnVsZSBydWxlKSB7CiAgICAgICAg
IHJldHVybiBydWxlLmxvY2FsTmFtZSA9PSBlbGVtZW50LmxvY2FsTmFtZSgpOwogICAgIH0sIFsm
ZWxlbWVudF0gKEF0dHJpYnV0ZVJ1bGUgcnVsZSkgewogICAgICAgICByZXR1cm4gZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShlbGVtZW50LmdldEF0dHJpYnV0ZShydWxlLm5hbWUpLCBydWxlLnZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCBiMDdiNzgwOGRm
YWQ1OWMzZDU0MDlmNTcyMDJhN2IxMjkxODIyYjJmLi4zNGY1YzkxNTlhYmRjM2M1ZmY3MjIwOGZm
Mzc1MWQxYTc3MjMxNTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJj
aFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3Bw
CkBAIC01MSw5ICs1MSw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiBVUkxT
ZWFyY2hQYXJhbXM6OmNyZWF0ZShWYXJpYW50PFZlY3RvcjxWZWN0b3I8CiAgICAgICAgICAgICBw
YWlycy5hcHBlbmQoe3BhaXJbMF0sIHBhaXJbMV19KTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMoV1RGTW92ZShwYWlycykpKTsKLSAgICB9
LCBbJl0oY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4mIHBh
aXJzKSB7CisgICAgfSwgWyZdKGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcs
IFN0cmluZz4+JiBwYWlycykgLT4gRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMU2VhcmNoUGFyYW1zKHBhaXJzKSk7Ci0g
ICAgfSwgWyZdKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CisgICAgfSwgWyZdKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSAtPiBFeGNlcHRpb25PcjxSZWY8VVJMU2VhcmNoUGFyYW1zPj4gewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMoc3RyaW5nLCBudWxscHRyKSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgdmFyaWFudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGUyOTk2Y2I5
MjVjYzVlYTRkM2UyOGQxYzVkOTU2MzA1ZjIwZGVlNWYuLmY4MzFjNmRkYjU3ZjI1MWEzY2ZjN2Zj
MzcyNWU3MDc3YWMwYjkzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgSW5zcGVjdG9yQ2FudmFzOjpJbnNwZWN0
b3JDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIAogQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXNDb250ZXh0KCkgY29uc3QKIHsKLSAg
ICBpZiAoYXV0byogY29udGV4dFdyYXBwZXIgPSBXVEY6OmdldF9pZjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+PihtX2NvbnRleHQpKQorICAgIGlmIChhdXRv
KiBjb250ZXh0V3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dD4+KCZtX2NvbnRleHQpKQogICAgICAgICByZXR1cm4gJmNvbnRl
eHRXcmFwcGVyLT5nZXQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTEyNCw4ICsxMjQs
NyBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXNFbGVtZW50KCkg
Y29uc3QKICAgICAgICAgICAgIGlmIChpczxIVE1MQ2FudmFzRWxlbWVudD4oY29udGV4dC5jYW52
YXNCYXNlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KGNvbnRleHQuY2FudmFzQmFzZSgpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICB9LAotICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CisgICAgICAgIH0sIFtdIChN
b25vc3RhdGUpIC0+IEhUTUxDYW52YXNFbGVtZW50KiB7CiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CkBAIC0x
MzksOCArMTM4LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSW5zcGVjdG9yQ2FudmFzOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAgW10gKHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4gY29udGV4dFdyYXBwZXIpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNvbnRleHQgPSBjb250ZXh0V3JhcHBlci5nZXQoKTsKICAgICAgICAgICAg
IHJldHVybiBjb250ZXh0LmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIFtdIChNb25vc3RhdGUpIHsKKyAgICAgICAgfSwgW10gKE1vbm9z
dGF0ZSkgLT4gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogewogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAt
ODkzLDggKzg5MSw3IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFzOjpDYW52YXM+IEluc3BlY3RvckNh
bnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0dXJlCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFByb3RvY29sOjpDYW52YXM6OkNvbnRleHRUeXBlOjpXZWJHTDI7CiAjZW5kaWYKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIChN
b25vc3RhdGUpIHsKKyAgICAgICAgfSwgW10gKE1vbm9zdGF0ZSkgLT4gQ29udGV4dFR5cGVUeXBl
IHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQpAQCAtOTIwLDggKzkxNyw3IEBAIFJlZjxQcm90b2Nv
bDo6Q2FudmFzOjpDYW52YXM+IEluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMo
Ym9vbCBjYXB0dXJlCiAgICAgYXV0byBjb250ZXh0QXR0cmlidXRlcyA9IFdURjo6c3dpdGNoT24o
bV9jb250ZXh0LAogICAgICAgICBbXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYW52YXNSZW5k
ZXJpbmdDb250ZXh0PiBjb250ZXh0V3JhcHBlcikgewogICAgICAgICAgICAgcmV0dXJuIGJ1aWxk
T2JqZWN0Rm9yQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMoY29udGV4dFdyYXBwZXIpOwotICAgICAg
ICB9LAotICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CisgICAgICAgIH0sIFtdIChNb25vc3RhdGUp
IC0+IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OkNvbnRleHRBdHRyaWJ1dGVz
PiB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9CkBAIC0xMDQwLDggKzEwMzYsOCBAQCBpbnQgSW5zcGVjdG9y
Q2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICAgICAg
aWYgKGRhdGEgPT0gaXRlbSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGF1
dG8gdHJhY2VBID0gV1RGOjpnZXRfaWY8UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4+KGRhdGEpOwot
ICAgICAgICBhdXRvIHRyYWNlQiA9IFdURjo6Z2V0X2lmPFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
PihpdGVtKTsKKyAgICAgICAgYXV0byB0cmFjZUEgPSBXVEY6OmdldF9pZjxSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPj4oJmRhdGEpOworICAgICAgICBhdXRvIHRyYWNlQiA9IFdURjo6Z2V0X2lmPFJl
ZlB0cjxTY3JpcHRDYWxsU3RhY2s+PigmaXRlbSk7CiAgICAgICAgIGlmICh0cmFjZUEgJiYgKnRy
YWNlQSAmJiB0cmFjZUIgJiYgKnRyYWNlQikKICAgICAgICAgICAgIHJldHVybiAoKnRyYWNlQSkt
PmlzRXF1YWwoKCp0cmFjZUIpLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGEzMGUyMTY0M2ExNTdhODJj
NWRkN2U1YjRkODU4NDBiNzRmYTUwMTYuLjg0NDRiNDcxNjY3NjVjYzgzZjU2NThjZmM4OWNkYjU0
MGRlY2Q0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
aGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0mIHByb2dyYW0sIEluc3BlY3Rv
ckMKICNpZiBFTkFCTEUoV0VCR0wpCiBXZWJHTFByb2dyYW0qIEluc3BlY3RvclNoYWRlclByb2dy
YW06OnByb2dyYW0oKSBjb25zdAogewotICAgIGlmIChhdXRvKiBwcm9ncmFtV3JhcHBlciA9IFdU
Rjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR0xQcm9ncmFtPj4obV9wcm9ncmFt
KSkKKyAgICBpZiAoYXV0byogcHJvZ3JhbVdyYXBwZXIgPSBXVEY6OmdldF9pZjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4+KCZtX3Byb2dyYW0pKQogICAgICAgICByZXR1cm4g
JnByb2dyYW1XcmFwcGVyLT5nZXQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGZkOWVjNzU5NzM3ZDRjOTc1OTgz
MWU3NzI0MzU5YmUyZTg2NjI0MzAuLmQxMDcwODI0NGZhMDNmMzgzYzU1Nzk5MWI0Njc1M2JmZDIz
YTJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzQx
LDE4ICszNDEsMTggQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkg
Y29uc3QKIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBj
b25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtd
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisg
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCog
eyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCiAjaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRh
LmdldCgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEp
IC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7
IH0sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0
ZXM+JiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19n
ZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdSZWZQ
dHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9
LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAorICAg
ICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10o
Y29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCi0gICAgICAgIFtdKGNvbnN0IFBy
b3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAor
ICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQo
dmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQyNSwxOCArNDI1LDE4IEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAg
YXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAgW10oY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7
IH0sCiAjaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYg
ZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpOyB9LAorICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIENG
RGF0YUdldExlbmd0aChkYXRhLmdldCgpKTsgfSwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAg
ICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIGdfYnl0ZXNfZ2V0
X3NpemUoZGF0YS5nZXQoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYg
ZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSk7IH0s
CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLT5zaXplKCk7IH0sCisgICAg
ICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IHNpemVf
dCB7IHJldHVybiBkYXRhLT5zaXplKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LAot
ICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIHsgcmV0dXJuIHByb3ZpZGVyLnNp
emUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0
YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LAorICAgICAgICBbXShjb25zdCBQ
cm92aWRlciYgcHJvdmlkZXIpIC0+IHNpemVfdCB7IHJldHVybiBwcm92aWRlci5zaXplKCk7IH0K
ICAgICApOwogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5k
ZXggZjZiZmRkN2Y1ZjczMzdlZTFmMTAzNjVjNWUyMDEzMTg1YTdlMmY4YS4uNzhlMWNiNGNlODcx
OTdlNDY3YzE2YzE0Y2JlNjIxMzZiMGZlNjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDQsNyArNDQsNyBAQCBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSkgewotICAgICAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8UmV0YWluUHRy
PENGRGF0YVJlZj4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKKyAg
ICAgICAgaWYgKGF1dG8qIGRhdGEgPSBXVEY6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4o
Jm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiAqZGF0YTsKICAgICB9CiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAgaWYgKGVudHJ5LnNlZ21lbnQt
Pmhhc09uZVJlZigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8
UmV0YWluUHRyPENGRGF0YVJlZj4+KGVudHJ5LnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCisg
ICAgICAgICAgICBpZiAoYXV0byogZGF0YSA9IFdURjo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFS
ZWY+PigmZW50cnkuc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgICAgICBP
U0FsbG9jYXRvcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oY29uc3RfY2FzdDxVSW50OCo+KENG
RGF0YUdldEJ5dGVQdHIoZGF0YS0+Z2V0KCkpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEtPmdldCgp
KSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRleCA5YjYzMGRiZDI3ZGYxZjRk
ODkyZTdlZGYwMDU0MmU0NWNmNTliNmVlLi42YTRhZmVjMjgyNGRiZDk2ZmNjNDc0OTFjYmJkYTlh
ODNhZDQ0MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIE5vZGUgPSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgYm9vbCwgdWludDMyX3QsIHVp
bnQ2NF90LCBpbnQzMl90LCBpbnQ2NF90LCBmbG9hdCwgZG91YmxlLCBTdHJpbmcsIHN0ZDo6dW5p
cXVlX3B0cjxEaWN0aW9uYXJ5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5Pj47CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZh
bHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZh
bHVlKSkpOyB9CisgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBt
X21hcC5hZGQoa2V5LCBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxOb2RlPihzdGQ6
OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KICAgICBOb2RlKiBnZXQoY29uc3QgU3RyaW5nJiBrZXkp
IHsgcmV0dXJuIG1fbWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6CkBAIC0yMjMsNyArMjIzLDcg
QEAgY29uc3QgVCogS2V5ZWREZWNvZGVyR2VuZXJpYzo6Z2V0UG9pbnRlckZyb21EaWN0aW9uYXJ5
U3RhY2soY29uc3QgU3RyaW5nJiBrZXkpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBXVEY6OmdldF9pZjxUPigqbm9kZSk7CisgICAgcmV0dXJu
IFdURjo6Z2V0X2lmPFQ+KCZub2RlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYzQ1ZDAz
YzUxMWE5ZDFjNTU4NzNjYzRkZmI0MGU5NDY2MDhiZjZkMC4uNTYxZjNmZDczZjc4OTFkOTE3YWNk
MjZhZjllMTAxN2EyYmQyZmI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEwMTYsNyArMTAxNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgSGFzaE1hcDxBdG9tU3RyaW5n
LCBSZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4+JiB0cmFja3MgPSAqZ2V0PEhhc2hNYXA8QXRvbVN0
cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+KHZhcmlhbnRUcmFja3MpOworICAgIEhh
c2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+PiYgdHJhY2tzID0gKldU
Rjo6Z2V0PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+KHZh
cmlhbnRUcmFja3MpOwogCiAgICAgLy8gSWdub3JlIG5vdGlmaWNhdGlvbnMgYWZ0ZXIgYSBFT1Mu
IFdlIGRvbid0IHdhbnQgdGhlIHRyYWNrcyB0byBkaXNhcHBlYXIgd2hlbiB0aGUgdmlkZW8gaXMg
ZmluaXNoZWQuCiAgICAgaWYgKG1faXNFbmRSZWFjaGVkICYmICh0eXBlID09IFRyYWNrVHlwZTo6
QXVkaW8gfHwgdHlwZSA9PSBUcmFja1R5cGU6OlZpZGVvKSkKQEAgLTEwNzEsMTYgKzEwNzEsMTYg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2so
KQogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwogICAgICAgICB0cmFj
a3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgIFZhcmlhbnQ8QXVk
aW9UcmFja1ByaXZhdGUmLCBWaWRlb1RyYWNrUHJpdmF0ZSYsIEluYmFuZFRleHRUcmFja1ByaXZh
dGUmPiB2YXJpYW50VHJhY2sodHJhY2suZ2V0KCkpOworICAgICAgICBWYXJpYW50PEF1ZGlvVHJh
Y2tQcml2YXRlKiwgVmlkZW9UcmFja1ByaXZhdGUqLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKj4g
dmFyaWFudFRyYWNrKCZ0cmFjay5nZXQoKSk7CiAgICAgICAgIHN3aXRjaCAodmFyaWFudFRyYWNr
LmluZGV4KCkpIHsKICAgICAgICAgY2FzZSBUcmFja1R5cGU6OkF1ZGlvOgotICAgICAgICAgICAg
bV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soZ2V0PEF1ZGlvVHJhY2tQcml2YXRlJj4odmFyaWFudFRy
YWNrKSk7CisgICAgICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygqV1RGOjpnZXQ8QXVk
aW9UcmFja1ByaXZhdGUqPih2YXJpYW50VHJhY2spKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFRyYWNrVHlwZTo6VmlkZW86Ci0gICAgICAgICAgICBtX3BsYXllci0+YWRkVmlk
ZW9UcmFjayhnZXQ8VmlkZW9UcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2spKTsKKyAgICAgICAg
ICAgIG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKCpXVEY6OmdldDxWaWRlb1RyYWNrUHJpdmF0ZSo+
KHZhcmlhbnRUcmFjaykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJhY2tU
eXBlOjpUZXh0OgotICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayhnZXQ8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOworICAgICAgICAgICAgbV9wbGF5ZXIt
PmFkZFRleHRUcmFjaygqV1RGOjpnZXQ8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSo+KHZhcmlhbnRU
cmFjaykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCAwMDI0NjUx
MmVkZjM2YjNkZWE0YzU5NWUyNWU4YzEyMGYyYWMzOGFmLi5iZDVlZGI5NjRjYzg5NTYxNTZlMGYw
YWU2NDJhYzczNjViNDYyY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZgogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oY2xvbmVk
VGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUodGV4dHVyZS5pZCk7CiAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4oV1RGTW92ZShjbG9uZWRUZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKICAgICAgICAgfSwKLSAg
ICAgICAgW10oY29uc3QgWVVWVGV4dHVyZSYpCisgICAgICAgIFtdKGNvbnN0IFlVVlRleHR1cmUm
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+CiAg
ICAgICAgIHsKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfSwKLSAgICAgICAgW10oY29uc3QgRXh0ZXJuYWxPRVNUZXh0
dXJlJikKKyAgICAgICAgW10oY29uc3QgRXh0ZXJuYWxPRVNUZXh0dXJlJikgLT4gc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPgogICAgICAgICB7CiAgICAg
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaAppbmRleCA0
NjdkOTEzOTQ0NDNlZmEyODM2M2E4NmE4ZDU0ZmQyYzQ0NTg1M2NhLi5hMjNkNzAxMzI1YmY1Nzg3
YzAwM2Y5OTdiYjEyZDBkNDc5ZmM1NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja01lZGlhRGV2aWNlLmgKQEAgLTIwMSw3ICsyMDEsNyBAQCBzdHJ1Y3QgTW9ja01l
ZGlhRGV2aWNlIHsKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudElkOwogICAg
ICAgICBlbmNvZGVyIDw8IGxhYmVsOwotICAgICAgICBzd2l0Y2hPbihwcm9wZXJ0aWVzLCBbJl0o
Y29uc3QgTW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgIFdU
Rjo6c3dpdGNoT24ocHJvcGVydGllcywgWyZdKGNvbnN0IE1vY2tNaWNyb3Bob25lUHJvcGVydGll
cyYgcHJvcGVydGllcykgewogICAgICAgICAgICAgZW5jb2RlciA8PCAodWludDhfdCkxOwogICAg
ICAgICAgICAgZW5jb2RlciA8PCBwcm9wZXJ0aWVzOwogICAgICAgICB9LCBbJl0oY29uc3QgTW9j
a1NwZWFrZXJQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGNlOWU5ZjUwYWM0ZTY4ZDhlYWY2NjNiZjg2
MTU4ZjRmZGM2MmU1MmIuLmFhNWZhYWI0ZTU3N2M2YmJmNzg3Nzk5OTViN2UxZjkxNzZhZWZlOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0x
MjcsNyArMTI3LDcgQEAgdW5zaWduZWQgRm9ybURhdGE6OmltYWdlT3JNZWRpYUZpbGVzQ291bnQo
KSBjb25zdAogewogICAgIHVuc2lnbmVkIGltYWdlT3JNZWRpYUZpbGVzQ291bnQgPSAwOwogICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgYXV0byogZW5jb2Rl
ZEZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+
KGVsZW1lbnQuZGF0YSk7CisgICAgICAgIGF1dG8qIGVuY29kZWRGaWxlRGF0YSA9IFdURjo6Z2V0
X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPigmZWxlbWVudC5kYXRhKTsKICAg
ICAgICAgaWYgKCFlbmNvZGVkRmlsZURhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAt
MTQwLDcgKzE0MCw3IEBAIHVuc2lnbmVkIEZvcm1EYXRhOjppbWFnZU9yTWVkaWFGaWxlc0NvdW50
KCkgY29uc3QKIAogdWludDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKGNvbnN0
IEZ1bmN0aW9uPHVpbnQ2NF90KGNvbnN0IFVSTCYpPiYgYmxvYlNpemUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHN3aXRjaE9uKGRhdGEsCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZGF0YSwKICAg
ICAgICAgW10gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpIHsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgfSwgW10g
KGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpAQCAt
MTYyLDcgKzE2Miw3IEBAIHVpbnQ2NF90IEZvcm1EYXRhRWxlbWVudDo6bGVuZ3RoSW5CeXRlcygp
IGNvbnN0CiAKIEZvcm1EYXRhRWxlbWVudCBGb3JtRGF0YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXRjaE9uKGRhdGEsCisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oZGF0YSwKICAgICAgICAgW10gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpIHsK
ICAgICAgICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yIHsgYnl0ZXMuZGF0YSgp
LCBieXRlcy5zaXplKCkgfSk7CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6
OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEZv
cm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAg
IG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIW1fZWxlbWVudHMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8
dWludDhfdD4+KG1fZWxlbWVudHMubGFzdCgpLmRhdGEpKSB7CisgICAgICAgIGlmIChhdXRvKiB2
ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KCZtX2VsZW1lbnRzLmxhc3QoKS5k
YXRhKSkgewogICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEpLCBzaXplKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MjkzLDcgKzI5Myw3IEBAIFZlY3Rvcjx1aW50OF90PiBGb3JtRGF0YTo6ZmxhdHRlbigpIGNvbnN0
CiAgICAgLy8gQ29uY2F0ZW5hdGUgYWxsIHRoZSBieXRlIGFycmF5cywgYnV0IG9taXQgYW55IGZp
bGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZl
Y3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9
IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oJmVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAg
ICBkYXRhLmFwcGVuZCh2ZWN0b3ItPmRhdGEoKSwgdmVjdG9yLT5zaXplKCkpOwogICAgIH0KICAg
ICByZXR1cm4gZGF0YTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBGb3JtRGF0YUZvclVwbG9hZCBGb3Jt
RGF0YTo6cHJlcGFyZUZvclVwbG9hZCgpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZ2VuZXJhdGVk
RmlsZXM7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBh
dXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVE
YXRhPihlbGVtZW50LmRhdGEpOworICAgICAgICBhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lm
PEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPigmZWxlbWVudC5kYXRhKTsKICAgICAg
ICAgaWYgKCFmaWxlRGF0YSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoRmls
ZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhmaWxlRGF0YS0+ZmlsZW5hbWUpICE9
IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpCkBAIC00MjUsNyArNDI1LDcgQEAgVVJM
IEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdAogICAgIGlmIChtX2VsZW1lbnRzLnNpemUoKSAh
PSAxKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgaWYgKGF1dG8qIGJsb2JEYXRhID0gV1RG
OjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGE+KG1fZWxlbWVudHMuZmly
c3QoKS5kYXRhKSkKKyAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0
YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oJm1fZWxlbWVudHMuZmlyc3QoKS5kYXRhKSkKICAg
ICAgICAgcmV0dXJuIGJsb2JEYXRhLT51cmw7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwCmluZGV4IDBiOThlYjc1ZDkwZjdmNzMzMzIyZDI4Njg5OGZhNjYyMzY3YjQxZWEu
LjQyYTE2ZmUzNjBjYWM2NzBmZDgzMmYyZjdkMjI4OGZmZWFhNGYyNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBib29sIGFkdmFuY2VDdXJyZW50U3Ry
ZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgLy8gQ3JlYXRlIHRoZSBuZXcgc3RyZWFt
LgogICAgIEZvcm1EYXRhRWxlbWVudCYgbmV4dElucHV0ID0gZm9ybS0+cmVtYWluaW5nRWxlbWVu
dHMubGFzdCgpOwogCi0gICAgYm9vbCBzdWNjZXNzID0gc3dpdGNoT24obmV4dElucHV0LmRhdGEs
CisgICAgYm9vbCBzdWNjZXNzID0gV1RGOjpzd2l0Y2hPbihuZXh0SW5wdXQuZGF0YSwKICAgICAg
ICAgW2Zvcm1dIChWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICBzaXplX3Qg
c2l6ZSA9IGJ5dGVzLnNpemUoKTsKICAgICAgICAgICAgIE1hbGxvY1B0cjx1aW50OF90LCBXVEY6
OlZlY3Rvck1hbGxvYz4gZGF0YSA9IGJ5dGVzLnJlbGVhc2VCdWZmZXIoKTsKQEAgLTM5Nyw3ICsz
OTcsNyBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwg
Rm9ybURhdGEqIGZvcm1EYXRhKQogICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2Fz
ZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVs
ZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9
PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZl
Y3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4o
JmVsZW1lbnRzWzBdLmRhdGEpKSB7CiAgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZShudWxscHRyLCB2ZWN0b3ItPmRhdGEoKSwgdmVjdG9yLT5zaXplKCkpKTsKICAg
ICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keShyZXF1ZXN0LCBkYXRhLmdl
dCgpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4IDI0ZDFjN2Q3MDY1MDE2ZTU1
MmU5ZmM2ZTllZDkyOGE1MTAyOTJkNmMuLjViNWUyODIwZWUwMTIwNDVjM2Y2ZjVjYjYxZjJjOTQ2
NTUyMzFjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDb250ZXh0LmNwcApAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgQ3VybEhhbmRsZTo6
ZW5hYmxlU1NMRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCiAjaWYgT1MoV0lORE9XUykKICAg
ICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX1NTTF9PUFRJT05TLCBDVVJMU1NM
T1BUX05BVElWRV9DQSk7CiAjZWxzZQotICAgIGlmIChhdXRvKiBwYXRoID0gV1RGOjpnZXRfaWY8
U3RyaW5nPihzc2xIYW5kbGUuZ2V0Q0FDZXJ0SW5mbygpKSkKKyAgICBpZiAoYXV0byogcGF0aCA9
IFdURjo6Z2V0X2lmPFN0cmluZz4oJnNzbEhhbmRsZS5nZXRDQUNlcnRJbmZvKCkpKQogICAgICAg
ICBzZXRDQUNlcnRQYXRoKHBhdGgtPnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCmluZGV4IGNjOWFiMGJjMDg1NTFlZmYwN2RmNDMzYjc2M2I5OWU4NTFiN2Y5
NDQuLjdhYTI2MmRjNzcxNjVkNmI3MjE5NmQ4ZWIxNmQ1Yzg5MmVlOGQ5ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1
cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogICAgICAg
ICAgICAgICAgIHJldHVybiByZWFkRnJvbURhdGEoYnl0ZXMsIGJ1ZmZlclBvc2l0aW9uLCBidWZm
ZXJTaXplKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNv
ZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRGcm9t
RmlsZShmaWxlRGF0YSwgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclNpemUpOwotICAgICAgICAgICAg
fSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJikgeworICAgICAg
ICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJikgLT4g
c3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
U0xWZXJpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTFZlcmlmaWVyLmNwcAppbmRleCA4Yjc5YmUyYTI4NmU1MmJmZjZjYjI5OTE3NjBlMTZlMjdh
MWI0NmMwLi5mYmIwZjVlOTU2Y2U4Y2FmYjRhYzE0OTRkNmYxNDFmNzA4NjhhZWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZl
cmlmaWVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBDdXJsU1NMVmVyaWZpZXI6OkN1cmxTU0xWZXJp
Zmllcih2b2lkKiBzc2xDdHgpCiAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgU1NMX0NUWF9n
ZXRfdmVyaWZ5X21vZGUoY3R4KSwgdmVyaWZ5Q2FsbGJhY2spOwogCiAjaWYgZGVmaW5lZChMSUJS
RVNTTF9WRVJTSU9OX05VTUJFUikKLSAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8Q2Vy
dGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZT4oc3NsSGFuZGxlLmdldENBQ2VydEluZm8oKSkpCisg
ICAgaWYgKGF1dG8gZGF0YSA9IFdURjo6Z2V0X2lmPENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNh
dGU+KCZzc2xIYW5kbGUuZ2V0Q0FDZXJ0SW5mbygpKSkKICAgICAgICAgU1NMX0NUWF9sb2FkX3Zl
cmlmeV9tZW0oY3R4LCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0
YS0+ZGF0YSgpKSksIGRhdGEtPnNpemUoKSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwCmluZGV4IDUyM2QwZDIxODU3ZDkwNDhjNTZiYjhjMTAzZDhhYTAwYmMxMGU2MDEuLjM4MzJl
ZjVhYjkxNDhiOGNjN2IzMGQ3Y2FhODZiZTI2OTZjODg1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291
cC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291
cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgQmxvYlJlZ2lzdAogICAgIC8v
IEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRh
LCB3aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRz
KCk7CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3Ry
ZWFtKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1
aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9
IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oJmVsZW1lbnRzWzBdLmRhdGEpKSB7CiAjaWYg
VVNFKFNPVVAyKQogICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNz
YWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFSWSwgdmVjdG9yLT5kYXRhKCks
IHZlY3Rvci0+c2l6ZSgpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZUZvckZvbnRSYXcuY3BwCmluZGV4IDcxYzc0Y2IwNjI0NTJiZGMwMTlhMDA3NzQ5YTk0
ODM2ZDQ2YTNhYjIuLjQyN2RkODg1NDhiZWY2NGY2MmM2ZTlmZmNiYmIxOTIxMjc1MWY0MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBA
IC0xNTgsNyArMTU4LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZv
bnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGUKICAgICB9CiAKICAgICBp
ZiAoZm9udFJhdy53ZWlnaHQpIHsKLSAgICAgICAgYXV0byB3ZWlnaHQgPSBzd2l0Y2hPbigqZm9u
dFJhdy53ZWlnaHQsIFsmXSAoQ1NTVmFsdWVJRCBpZGVudCkgeworICAgICAgICBhdXRvIHdlaWdo
dCA9IFdURjo6c3dpdGNoT24oKmZvbnRSYXcud2VpZ2h0LCBbJl0gKENTU1ZhbHVlSUQgaWRlbnQp
IHsKICAgICAgICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVOb3JtYWw6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbFdlaWdodFZhbHVlKCk7CkBA
IC0xNzksNyArMTc5LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZv
bnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGUKICAgICB9CiAKICAgICBm
b250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemVGcm9tSWRlbnRpZmllcihDU1NWYWx1ZUludmFs
aWQpOwotICAgIGZsb2F0IHNpemUgPSBzd2l0Y2hPbihmb250UmF3LnNpemUsIFsmXSAoQ1NTVmFs
dWVJRCBpZGVudCkgeworICAgIGZsb2F0IHNpemUgPSBXVEY6OnN3aXRjaE9uKGZvbnRSYXcuc2l6
ZSwgWyZdIChDU1NWYWx1ZUlEIGlkZW50KSB7CiAgICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVh4U21hbGw6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVYU21hbGw6
CkBAIC0xOTksNyArMTk5LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZv
ckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGUKICAgICAgICAgICAg
IHJldHVybiAwLmY7CiAgICAgICAgIH0KICAgICB9LCBbJl0gKGNvbnN0IENTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6TGVuZ3RoT3JQZXJjZW50UmF3JiBsZW5ndGhPclBlcmNlbnQpIHsKLSAgICAg
ICAgcmV0dXJuIHN3aXRjaE9uKGxlbmd0aE9yUGVyY2VudCwgWyZdIChjb25zdCBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6Okxlbmd0aFJhdyYgbGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGxlbmd0aE9yUGVyY2VudCwgWyZdIChjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnM6Okxlbmd0aFJhdyYgbGVuZ3RoKSB7CiAgICAgICAgICAgICBhdXRvIGZvbnRDYXNjYWRl
ID0gRm9udENhc2NhZGUoRm9udENhc2NhZGVEZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKTsK
ICAgICAgICAgICAgIGZvbnRDYXNjYWRlLnVwZGF0ZShjb250ZXh0LmNzc0ZvbnRTZWxlY3Rvcigp
KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzaW5nIG51bGwgZm9yIHRoZSBSZW5kZXJWaWV3
IHBhcmFtZXRlciBtZWFucyB0aGF0IHZ3IGFuZCB2aCB1bml0cyB3aWxsIGV2YWx1YXRlIHRvCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGRiMTU1YWNhM2Y3M2Q5NjUxMWYwMTAyOTBk
NmEyMjE2NDlmOGM5ZjEuLjFjNjQ1ZjZmYzg0OWZjNzQ3ZDI1YzhlNTU4MTUxZWZiNjFmNDc1ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmUKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IGZpbGVzOwogICAgIGlmIChhdXRvKiBib2R5ID0gbG9hZFBhcmFtZXRlcnMu
cmVxdWVzdC5odHRwQm9keSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGJvZHkt
PmVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBibG9iRGF0YSA9IFdURjo6Z2V0
X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhPihlbGVtZW50LmRhdGEpKQorICAg
ICAgICAgICAgaWYgKGF1dG8qIGJsb2JEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkQmxvYkRhdGE+KCZlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgICAgIGZpbGVz
LmFwcGVuZFZlY3RvcihibG9iUmVnaXN0cnkuZmlsZXNJbkJsb2IoYmxvYkRhdGEtPnVybCkpOwog
ICAgICAgICB9CiAgICAgICAgIGNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4o
bG9hZFBhcmFtZXRlcnMucmVxdWVzdCkuc2V0SFRUUEJvZHkoYm9keS0+cmVzb2x2ZUJsb2JSZWZl
cmVuY2VzKCZibG9iUmVnaXN0cnkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXgg
ZGRmOTZkZTAzM2M2NWY1NTIxZjNiYmJlODFkMTlhYzhlN2E1YmU5ZC4uNGUwZmJjZDRlODdlM2Yw
ZDBmZmM2NjIzZTA5NTEyZTNjZmY3Y2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgICAgICBWZWN0b3I8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zOwogICAgICAg
ICBmb3IgKGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6IHJlcXVlc3QuaHR0cEJvZHko
KS0+ZWxlbWVudHMoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpn
ZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxl
bWVudDo6RW5jb2RlZEZpbGVEYXRhPigmZWxlbWVudC5kYXRhKSkgewogICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRhLT5maWxlbmFtZTsKICAgICAgICAgICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQogICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCmluZGV4IGMy
ZDU4OTU5NWY1ZTM0MTBkMWFlYWY0MmJhN2FlZTIzOGY3MTU0MTcuLmI0MzExZjM1YThjMzgwNjZm
ODUzMWFkYTIzODlmYjg5YTg4MWYxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRm9ybURhdGFSZWZlcmVuY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgVmVjdG9yPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlczsKICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9kYXRhLT5lbGVtZW50
cygpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxXZWJD
b3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkgewor
ICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8V2ViQ29yZTo6Rm9y
bURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KCZlbGVtZW50LmRhdGEpKSB7CiAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPmZpbGVuYW1lOwogICAgICAg
ICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkp
KQogICAgICAgICAgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5hcHBlbmQoV1RG
TW92ZSgqaGFuZGxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAppbmRleCA5NjJl
MjExZTFiZjJjMTE4MjhiYmQ3ZTA3NDgyNjkwOWQwYzAzMzgwLi4zNGNhYzA5NTFlM2RhZDY3YzQ2
ZDQ5MzM3MDM1MWMwODNmYzY2YjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAK
QEAgLTE1MywxMyArMTUzLDExIEBAIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgT3JkZXJlZE1hcDo6
aXRlcmF0b3I+IE1lZGlhU2FtcGxlQ3Vyc29yOjpsb2NhdGVJdGVyYXRvcihPCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAg
IHJldHVybiBsb2NhdGVJdGVyYXRvcihzYW1wbGVzLCBoYXNBbGxTYW1wbGVzKTsKLSAgICAgICAg
fSwKLSAgICAgICAgWyZdKGNvbnN0IGF1dG8mIG90aGVySXRlcmF0b3IpIHsKKyAgICAgICAgfSwg
WyZdKGNvbnN0IGF1dG8mIG90aGVySXRlcmF0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8SXRlcmF0b3I+
IHsKICAgICAgICAgICAgIGFzc2VydElzSGVsZChtX2xvY2F0b3JMb2NrKTsKICAgICAgICAgICAg
IG1fbG9jYXRvciA9IG90aGVySXRlcmF0b3ItPnNlY29uZC0+cHJlc2VudGF0aW9uVGltZSgpOwog
ICAgICAgICAgICAgcmV0dXJuIGxvY2F0ZUl0ZXJhdG9yKHNhbXBsZXMsIGhhc0FsbFNhbXBsZXMp
OwotICAgICAgICB9LAotICAgICAgICBbJl0oY29uc3QgSXRlcmF0b3ImIGl0ZXJhdG9yKSB7Cisg
ICAgICAgIH0sIFsmXShjb25zdCBJdGVyYXRvciYgaXRlcmF0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8
SXRlcmF0b3I+IHsKICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKICAgICAgICAgfQogICAg
ICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwuaAppbmRleCAwYjBlMjFlZWE4NmRlYjRkZjBiMmNhMDRmNTQyM2EyMmNl
YjczNGU1Li44MmMxYmY4OTQxY2Q3YWJhNjU1ODNiMTNkZjNkNWEzNWM2ZWMyYWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIuaAppbmRleCA4MDZiMjU0ZTMwNzBiZTg0NGExYjIzOTEyNDFkZTY3NWM5NGNhODRkLi4z
YWEyNWZkMDY3OTc4MTYyMmYxMDY2NWM3NDdiY2Q3YzVmM2QxYjhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+Cisj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgKaW5kZXggNjFiZTM3MTdiODA2NDZh
NmZhMzAxYjIyMzU0YWY3ODlhMjU0YTVlMC4uNDMxODljMGEzYTFlOTU5NzgwY2FiMTJhZTI2Yzhi
NzdlZDUzNzA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tT
YWZlQnJvd3NpbmdXYXJuaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KICNpbXBvcnQgPHd0Zi9XZWFr
T2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk5NGM5MDM3Y2Q5OThiOGIyZmFmN2U2MzhmMGYx
YjYxYjYwNTRmYjYuLjc1NWFmMzg3OTM0ODZlMjlkYjUzYjU5NDE0ZWEzYWE5MzQxOTBhYjUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50IHRv
IHN0ZDo6dmFyaWFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxMjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6YWRkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJp
YW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTEwLTA1ICBE
YXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwICMy
OiBXVEY6OlJldGFpblB0cjw+IGFsbG93cyBhc3NpZ25tZW50IG9mIHR3byBwb2ludGVyIHR5cGVz
IHRoYXQgYXJlIG5vdCBhc3NpZ25hYmxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aGVyLmNwcAppbmRleCA1OWUyMjU2MjRmYjNhNWZkNjUyY2QyYTJhMjQ5ZmE2NTM0ZDk2MDQ1Li44
NjQ4OTY4NTI1OGVmMWM5OGRjOTBiMjY1NDRjNGY0ZWNlZGVjNDg3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdHJ1Y3QgSGFz
aGVyQWRkQ3VzdG9tMiB7IH07CiAKIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBIYXNo
ZXJBZGRDdXN0b20yJikKIHsKLSAgICBhZGQoaGFzaGVyLCB7IDEsIDIsIDMsIDQgfSk7CisgICAg
YWRkKGhhc2hlciwgc3RkOjppbml0aWFsaXplcl9saXN0PGludD4geyAxLCAyLCAzLCA0IH0pOwog
fQogCiBURVNUKFdURiwgSGFzaGVyX2N1c3RvbSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVmFyaWFudC5jcHAKaW5kZXggNTFlY2EwNzY4ZDJjY2UxYzlhMzI5NTU1MmQzNTAwOWZmNGZk
NTZiYi4uZjU5YWQzMDk2ZTBkNmZmNDhlN2JmNmE4MzQzODExOWZlMzBlMWE3MCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKQEAgLTU0LDE4ICs1NCwxOCBAQCBU
RVNUKFdURl9WYXJpYW50LCBJbml0aWFsKQogVEVTVChXVEZfVmFyaWFudCwgQmFzaWMpCiB7CiAg
ICAgVmFyaWFudDxpbnQsIGRvdWJsZT4gdmFyaWFudCA9IDE7Ci0gICAgRVhQRUNUX1RSVUUodmFy
aWFudC5pbmRleCgpID09IDApOwotICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0PGludD4odmFyaWFu
dCkgPT0gMSk7Ci0gICAgRVhQRUNUX1RSVUUoKldURjo6Z2V0X2lmPGludD4odmFyaWFudCkgPT0g
MSk7Ci0gICAgRVhQRUNUX1RSVUUoV1RGOjpnZXRfaWY8ZG91YmxlPih2YXJpYW50KSA9PSBudWxs
cHRyKTsKKyAgICBFWFBFQ1RfRVEodmFyaWFudC5pbmRleCgpLCAwdSk7CisgICAgRVhQRUNUX0VR
KFdURjo6Z2V0PGludD4odmFyaWFudCksIDEpOworICAgIEVYUEVDVF9FUSgqV1RGOjpnZXRfaWY8
aW50PigmdmFyaWFudCksIDEpOworICAgIEVYUEVDVF9FUShXVEY6OmdldF9pZjxkb3VibGU+KCZ2
YXJpYW50KSwgbnVsbHB0cik7CiAgICAgRVhQRUNUX1RSVUUoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxpbnQ+KHZhcmlhbnQpKTsKICAgICBFWFBFQ1RfRkFMU0UoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxkb3VibGU+KHZhcmlhbnQpKTsKIAogICAgIHZhcmlhbnQgPSAxLjA7Ci0gICAgRVhQRUNUX1RS
VUUodmFyaWFudC5pbmRleCgpID09IDEpOwotICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0PGRvdWJs
ZT4odmFyaWFudCkgPT0gMSk7Ci0gICAgRVhQRUNUX1RSVUUoKldURjo6Z2V0X2lmPGRvdWJsZT4o
dmFyaWFudCkgPT0gMS4wKTsKLSAgICBFWFBFQ1RfVFJVRShXVEY6OmdldF9pZjxpbnQ+KHZhcmlh
bnQpID09IG51bGxwdHIpOworICAgIEVYUEVDVF9FUSh2YXJpYW50LmluZGV4KCksIDF1KTsKKyAg
ICBFWFBFQ1RfRVEoV1RGOjpnZXQ8ZG91YmxlPih2YXJpYW50KSwgMSk7CisgICAgRVhQRUNUX0VR
KCpXVEY6OmdldF9pZjxkb3VibGU+KCZ2YXJpYW50KSwgMS4wKTsKKyAgICBFWFBFQ1RfRVEoV1RG
OjpnZXRfaWY8aW50PigmdmFyaWFudCksIG51bGxwdHIpOwogICAgIEVYUEVDVF9UUlVFKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPih2YXJpYW50KSk7CiAgICAgRVhQRUNUX0ZBTFNFKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8aW50Pih2YXJpYW50KSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440243</attachid>
            <date>2021-10-05 12:00:42 -0700</date>
            <delta_ts>2021-10-05 15:24:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231239-20211005120041.patch</filename>
            <type>text/plain</type>
            <size>79133</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YzNmM2E3OWJkNTc2OGJhNjkwYTZmNTcxODEyNTJjNjIzM2QzYTk2Li5mYWMyYjVkY2Q0ZDljZjkw
MWE5NDE5MjZmZjk0OGE5NGY3NDBjOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50
IHRvIHN0ZDo6dmFyaWFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMxMjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogcGFyc2VyL0xleGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlSGV4KToKKyAgICAgICAgKEpTQzo6
TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlT2N0
YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKToKKyAgICAgICAgKiBy
dW50aW1lL0NhY2hlUGF5bG9hZC5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlUGF5bG9hZDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlUGF5bG9hZDo6c2l6ZSBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9DYWNoZVVwZGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlVXBkYXRl
OjpDYWNoZVVwZGF0ZSk6CisKIDIwMjEtMTAtMDUgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbSlNDXVszMmJpdF0gRml4IGJ1Z3MgYWZ0ZXIgdW5saW5rZWQgYmFzZWxp
bmUgaml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IGZlY2M1YzgxODA2YTQ2YzlkNmI3NjI0MGExYmY0NTIyODZhYzQ2NzAuLjRi
YjA1MmQ1YmQ2MmMwNDQ3N2E4OTQyZTJkOWQxNDU5YzI1ODc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMjEtMTAtMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBQcmVwYXJlIHRvIHN3aXRjaCBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6
OnZhcmlhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgaXMgdGhlIHBpZWNlcyBvZiBidWcgMjMxMDg2IHRoYXQgY2FuIGJlIGRvbmUgd2l0aG91
dCBjaGFuZ2luZyBiZWhhdmlvci4KKworICAgICAgICAxLiBJdCBtYWtlcyBXVEY6OmdldF9pZiBs
b29rIG1vcmUgbGlrZSBzdGQ6OmdldF9pZiBieSB0YWtpbmcgYSBwb2ludGVyIHRvIGEgdmFyaWFu
dCBpbnN0ZWFkIG9mIGEgcmVmZXJlbmNlLgorICAgICAgICAyLiBzdGQ6OnZpc2l0IGlzIHBpY2tp
ZXIgdGhhbiBXVEY6OnZpc2l0LiAgVGhlIGZvcm1lciBhbGxvd3MgdGFraW5nIGxhbWJkYXMgd2l0
aCBkaWZmZXJlbnQgcmV0dXJuIHR5cGVzIGFzIGxvbmcKKyAgICAgICAgYXMgdGhlIHJldHVybiB0
eXBlcyBjYW4gYmUgY29udmVydGVkIHRvIHRoZSBvdmVyYWxsIGRlc2lyZWQgcmV0dXJuIHR5cGUu
ICBzdGQ6OnZpc2l0IGhhcyBhIHN0YXRpY19hc3NlcnQgdGhhdCB0aGUKKyAgICAgICAgcmV0dXJu
IHR5cGVzIG9mIGFsbCB0aGUgbGFtYmRhcyBhcmUgYWxsIGV4YWN0bHkgdGhlIHNhbWUgdHlwZSwg
c28gSSBleHBsaWNpdGx5IGRlY2xhcmUgdGhlIHJldHVybiB0eXBlIG9mIG1hbnkgbGFtYmRhcy4K
KyAgICAgICAgMy4gSXQgYWxzbyByZXNvbHZlcyBzb21lIHR5cGVzIHRoYXQgd2lsbCBiZWNvbWUg
YW1iaWd1b3VzIGJ5IHVzaW5nIFdURjo6aW5fcGxhY2UsCisgICAgICAgIHdoaWNoIHdpbGwgYmVj
b21lIHdyYXBwZWQgYnkgc3RkOjppbl9wbGFjZV90eXBlIHRoZW4gcmVtb3ZlZC4KKyAgICAgICAg
NC4gSXQgYWRkcyBhIGZldyBleHBsaWNpdCBXVEY6OiBhbmQgI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+IHRoYXQgd2lsbCBiZSBuZWVkZWQgYWZ0ZXIgcmVtb3ZpbmcgVmFyaWFudCBmcm9tIEZvcndh
cmQuaC4KKyAgICAgICAgNS4gSXQgcmVtb3ZlcyB0aGUgZmFzdCBtYWxsb2MgY2hlY2sgaW4gdGhl
IG9uZSBwbGFjZSBhIFZhcmlhbnQgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGluIEtleWVkRGVj
b2RlckdlbmVyaWMuY3BwCisgICAgICAgICh3aGljaCBpcyBmb3Igbm9uLWNvY29hIHBsYXRmb3Jt
cykgYmVjYXVzZSBzdGQ6OnZhcmlhbnQgaXNuJ3QgZmFzdCBhbGxvY2F0ZWQuCisKKyAgICAgICAg
KiB3dGYvTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQuaDoKKyAgICAgICAgKFdURjo6TGlr
ZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQ6Oml0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgor
ICAgICAgICAqIHd0Zi9WYXJpYW50Lmg6CisgICAgICAgIChXVEY6OmdldF9pZik6CisKIDIwMjEt
MTAtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGFuIGFsdGVybmF0ZSBzdHlsZSBmb3IgZm9ybSBjb250cm9scywgYW5kIGltcGxlbWVudCBp
dCBmb3IgY2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYwYTYwNDNm
MDEzNjEzYzY0ZWZmODUzZjYyNGExNjNjMzQ2MGIxZmIuLmE2ZDI0N2VjMmVhNTg5ZDk3NDFjZGIz
NjFmMzM5NDFmMTg1MTE4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDggQEAKKzIwMjEtMTAt
MDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBQcmVwYXJlIHRvIHN3aXRjaCBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTIzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRpbmdFeGNl
cHRpb24gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c291cmNlT2JqZWN0U3RvcmVJZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnNob3dNZWRp
YUNvbnRyb2xzQ29udGV4dE1lbnUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OmFkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBU
cmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjppc0F0dGFj
aGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6dmlkZW9Tb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6aGFzU291
cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkZyYW1lOjpnZXRWaWV3ZXJQb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhS
V2ViR0xMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmNhbnZh
cyBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjppbnRQb2lu
dEF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6Om9iamVjdEF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OnJlY3RBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojp2ZWN0b3JBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpvcHRpb25TZXRBdHRyaWJ1dGVWYWx1ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpwYWlyQXR0cmlidXRlVmFs
dWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dWludDY0QXR0
cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
dXJsQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6cGF0aEF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OmNvbG9yQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6ZmxvYXRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpkb3VibGVBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1bnNpZ25lZEF0dHJpYnV0ZVZh
bHVlIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9JRExUeXBlcy5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGF5bWVudE1ldGhvZENoYW5n
ZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUGF5bWVudE1ldGhvZENoYW5n
ZUV2ZW50OjptZXRob2REZXRhaWxzIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0OjpvcGVyYXRvciBKU0M6OkpTVmFsdWUgY29uc3QpOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUZvbnRX
ZWlnaHQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZUV2ZW50OjptZW1vcnlDb3N0IGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVs
bGluZyk6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9u
UnVsZTo6bWF0Y2ggY29uc3QpOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6Y3JlYXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhczo6Y2FudmFzQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDYW52YXM6OmNhbnZhc0VsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2FudmFzOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clNoYWRlclByb2dyYW06OnByb2dyYW0gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OnNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24g
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpEaWN0aW9uYXJ5Ojph
ZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6Z2V0UG9pbnRlckZy
b21EaWN0aW9uYXJ5U3RhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI6OmNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRGV2aWNlOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OmltYWdlT3JNZWRpYUZpbGVzQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1EYXRhRWxlbWVudDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1EYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpmbGF0
dGVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpwcmVwYXJlRm9yVXBsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphc0Jsb2JVUkwgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjphZHZhbmNlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRI
VFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmVuYWJsZVNTTEZvckhvc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxTU0xWZXJpZmllcjo6Q3VybFNTTFZlcmlmaWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keSBjb25zdCk6CisgICAgICAgICog
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6cmVzb2x2ZUZvckZvbnRSYXcpOgorCiAyMDIxLTEwLTA1ICBOaWtvcyBNb3VjaHRhcmlzICA8
bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIHJhZGlhbC1ncmFkaWVudCBkb2VzIG5v
dCBhY2NlcHQgY2FsYyB2YWx1ZXMgdGhhdCBjb21iaW5lIGxlbmd0aCBhbmQgcGVyY2VudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBhOTYwNjRmYTlkMjRlOWYzNjc3Y2Q0OTAzYzliOTY1M2VkMDg2YjAyLi43YWUwNmU5
NTgxYjFiMTFjMGZkNDg4NjQ3OWYyZmRlNTEwYTUxMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDIxLTEwLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUHJlcGFyZSB0byBzd2l0Y2ggZnJvbSBXVEY6OlZhcmlhbnQgdG8gc3Rk
Ojp2YXJpYW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzEyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc29sdmVCbG9i
UmVmZXJlbmNlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRm9ybURhdGFS
ZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6Rm9ybURhdGFSZWZlcmVuY2U6OmVuY29kZSBjb25z
dCk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1
cnNvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU2FtcGxlQ3Vyc29yOjpsb2NhdGVJdGVy
YXRvciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
blBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2Fy
bmluZy5oOgorCiAyMDIxLTEwLTA1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBhbiBhbHRlcm5hdGUgc3R5bGUgZm9yIGZvcm0gY29udHJvbHMs
IGFuZCBpbXBsZW1lbnQgaXQgZm9yIGNoZWNrYm94ZXMgYW5kIHJhZGlvIGJ1dHRvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYzkw
YzYwODllOTNkNmIxOGJlMzE5YjQ2MWRmMDBkYzNiYmE3YzQ1Yi4uNDBlNDc2YTE4MzdhYmFkNGQ4
NDI1NTRhYWZjYTBkNDRjYmMwMmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwNTQ4LDEzICsxMDU0OCwxNCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2RlKiBub2RlKQogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdpdGggdGhlIHZlY3RvciBv
ZiByZWdpc3RlcnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzA5OQotICAgIFZlY3RvcjxWYXJpYW50PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQsIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiwgSlNDX0RPTUpJVF9T
SUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4gb3BlcmFuZHM7CisgICAgdXNp
bmcgT3BlcmFuZFZhcmlhbnQgPSBWYXJpYW50PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVjdWxh
dGVJbnQzMk9wZXJhbmQsIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPjsKKyAgICBWZWN0b3I8T3Bl
cmFuZFZhcmlhbnQsIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNfSU5DTFVESU5H
X1RISVM+IG9wZXJhbmRzOwogICAgIFZlY3RvcjxHUFJSZWcsIEpTQ19ET01KSVRfU0lHTkFUVVJF
X01BWF9BUkdVTUVOVFNfSU5DTFVESU5HX1RISVM+IHJlZ3M7CiAKICAgICBhdXRvIGFwcGVuZENl
bGwgPSBbJl0oRWRnZSYgZWRnZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVy
YW5kKHRoaXMsIGVkZ2UpOwogICAgICAgICByZWdzLmFwcGVuZChvcGVyYW5kLmdwcigpKTsKLSAg
ICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgICAgICBvcGVyYW5k
cy5hcHBlbmQoT3BlcmFuZFZhcmlhbnQoV1RGOjppbl9wbGFjZTxTcGVjdWxhdGVDZWxsT3BlcmFu
ZD4sIFdURk1vdmUob3BlcmFuZCkpKTsKICAgICB9OwogCiAgICAgYXV0byBhcHBlbmRTdHJpbmcg
PSBbJl0oRWRnZSYgZWRnZSkgewpAQCAtMTA1NjIsMTkgKzEwNTYzLDE5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyBncHIg
PSBvcGVyYW5kLmdwcigpOwogICAgICAgICByZWdzLmFwcGVuZChncHIpOwogICAgICAgICBzcGVj
dWxhdGVTdHJpbmcoZWRnZSwgZ3ByKTsKLSAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUo
b3BlcmFuZCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoT3BlcmFuZFZhcmlhbnQoV1RGOjpp
bl9wbGFjZTxTcGVjdWxhdGVDZWxsT3BlcmFuZD4sIFdURk1vdmUob3BlcmFuZCkpKTsKICAgICB9
OwogCiAgICAgYXV0byBhcHBlbmRJbnQzMiA9IFsmXShFZGdlJiBlZGdlKSB7CiAgICAgICAgIFNw
ZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgICAgICByZWdzLmFw
cGVuZChvcGVyYW5kLmdwcigpKTsKLSAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3Bl
cmFuZCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoT3BlcmFuZFZhcmlhbnQoV1RGOjppbl9w
bGFjZTxTcGVjdWxhdGVJbnQzMk9wZXJhbmQ+LCBXVEZNb3ZlKG9wZXJhbmQpKSk7CiAgICAgfTsK
IAogICAgIGF1dG8gYXBwZW5kQm9vbGVhbiA9IFsmXShFZGdlJiBlZGdlKSB7CiAgICAgICAgIFNw
ZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CiAgICAgICAgIHJlZ3Mu
YXBwZW5kKG9wZXJhbmQuZ3ByKCkpOwotICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShv
cGVyYW5kKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChPcGVyYW5kVmFyaWFudChXVEY6Omlu
X3BsYWNlPFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiwgV1RGTW92ZShvcGVyYW5kKSkpOwogICAg
IH07CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCmluZGV4IDBmYmUwYmM4ZjdhZmYxZGJhMjY2ZDIyODY2MTNmY2U3MTkzOTRmYTku
LjJhOGE2N2FmM2YyMmNiNWZjMjU0MjgyNTJmMjZmZGEyMzk0ZjgzNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBBTFdBWVNfSU5M
SU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlSGV4KCkgLT4gc3RkOjpvcHRpb25hbDxOdW1iZXJQYXJz
ZVJlc3VsdD4KICAgICB9IHdoaWxlIChpc0FTQ0lJSGV4RGlnaXRPclNlcGFyYXRvcihtX2N1cnJl
bnQpICYmIG1heGltdW1EaWdpdHMgPj0gMCk7CiAKICAgICBpZiAoTElLRUxZKG1heGltdW1EaWdp
dHMgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKLSAgICAgICAgcmV0dXJuIE51bWJlclBhcnNl
UmVzdWx0IHsgaGV4VmFsdWUgfTsKKyAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsg
c3RhdGljX2Nhc3Q8ZG91YmxlPihoZXhWYWx1ZSkgfTsKIAogICAgIC8vIE5vIG1vcmUgcGxhY2Ug
aW4gdGhlIGhleFZhbHVlIGJ1ZmZlci4KICAgICAvLyBUaGUgdmFsdWVzIGFyZSBzaGlmdGVkIG91
dCBhbmQgcGxhY2VkIGludG8gdGhlIG1fYnVmZmVyOCB2ZWN0b3IuCkBAIC0xNjA5LDcgKzE2MDks
NyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQmluYXJ5KCkgLT4gc3RkOjpv
cHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICB9IHdoaWxlIChpc0FTQ0lJQmluYXJ5RGln
aXRPclNlcGFyYXRvcihtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCiAgICAgaWYgKExJS0VM
WSghaXNBU0NJSURpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwICYmIG1f
Y3VycmVudCAhPSAnbicpKQotICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBiaW5h
cnlWYWx1ZSB9OworICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBzdGF0aWNfY2Fz
dDxkb3VibGU+KGJpbmFyeVZhbHVlKSB9OwogCiAgICAgZm9yIChpbnQgaSA9IG1heGltdW1EaWdp
dHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAgICAgcmVjb3JkOChkaWdpdHNbaV0pOwpAQCAt
MTY2NSw3ICsxNjY1LDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZU9jdGFs
KCkgLT4gc3RkOjpvcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICB9IHdoaWxlIChpc0FT
Q0lJT2N0YWxEaWdpdE9yU2VwYXJhdG9yKG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKICAg
ICBpZiAoTElLRUxZKCFpc0FTQ0lJRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpICYmIGRpZ2l0
ID49IDAgJiYgbV9jdXJyZW50ICE9ICduJykpCi0gICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJl
c3VsdCB7IG9jdGFsVmFsdWUgfTsKKyAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsg
c3RhdGljX2Nhc3Q8ZG91YmxlPihvY3RhbFZhbHVlKSB9OwogCiAgICAgZm9yIChpbnQgaSA9IG1h
eGltdW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAgICAgIHJlY29yZDgoZGlnaXRz
W2ldKTsKQEAgLTE3MjQsNyArMTcyNCw3IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6
cGFyc2VEZWNpbWFsKCkgLT4gc3RkOjpvcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICAg
ICAgfSB3aGlsZSAoaXNBU0NJSURpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSAmJiBkaWdpdCA+
PSAwKTsKIAogICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJy4nICYmICFp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSAmJiBtX2N1cnJlbnQgIT0g
J24nKQotICAgICAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsgZGVjaW1hbFZhbHVl
IH07CisgICAgICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBzdGF0aWNfY2FzdDxk
b3VibGU+KGRlY2ltYWxWYWx1ZSkgfTsKIAogICAgICAgICBmb3IgKGludCBpID0gbWF4aW11bURp
Z2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAgICAgICAgcmVjb3JkOChkaWdpdHNbaV0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2Fk
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlUGF5bG9hZC5jcHAKaW5k
ZXggNjE2OGZlZTk2NmNiNjVjNTZjZDY2NTU1NjY2Y2Y1NGJmZGI3MjliZC4uMjdkMmI3Yjc0MWE3
ZGY1ZmE2Nzg5ZDcyZTgyMjFkZjQ4ODNiNzU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVQYXlsb2FkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3BwCkBAIC02MSwyMSArNjEsMjEgQEAgY29uc3QgdWlu
dDhfdCogQ2FjaGVQYXlsb2FkOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihtX2RhdGEsCiAgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBk
YXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10oY29uc3Qgc3RkOjpwYWlyPE1hbGxv
Y1B0cjx1aW50OF90LCBWTU1hbGxvYz4sIHNpemVfdD4mIGRhdGEpIHsKKyAgICAgICAgfSwgW10o
Y29uc3Qgc3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90LCBWTU1hbGxvYz4sIHNpemVfdD4mIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmZpcnN0Lmdl
dCgpOwotICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICk7CiB9CiAKIHNpemVfdCBDYWNoZVBh
eWxvYWQ6OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fZGF0YSwK
LSAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsKKyAg
ICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IHNpemVf
dCB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5zaXplKCk7Ci0gICAgICAgIH0sCi0gICAgICAg
IFtdKGNvbnN0IHN0ZDo6cGFpcjxNYWxsb2NQdHI8dWludDhfdCwgVk1NYWxsb2M+LCBzaXplX3Q+
JiBkYXRhKSB7CisgICAgICAgIH0sIFtdKGNvbnN0IHN0ZDo6cGFpcjxNYWxsb2NQdHI8dWludDhf
dCwgVk1NYWxsb2M+LCBzaXplX3Q+JiBkYXRhKSAtPiBzaXplX3QgewogICAgICAgICAgICAgcmV0
dXJuIGRhdGEuc2Vjb25kOwotICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVVcGRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVV
cGRhdGUuY3BwCmluZGV4IDcwZDM2YjM4NWFiNWIyZjg5MGE5NjczMDljM2M0YWQwNzE5N2RkYTMu
LjY1YjQxMDk0ZDVhYzk2OTliMjJlMjM2OTQ5MzE3MTc5NmM2ZjkzMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlVXBkYXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVVwZGF0ZS5jcHAKQEAgLTM4LDEzICszOCw3IEBA
IENhY2hlVXBkYXRlOjpDYWNoZVVwZGF0ZShGdW5jdGlvblVwZGF0ZSYmIHVwZGF0ZSkKIHsKIH0K
IAotQ2FjaGVVcGRhdGU6OkNhY2hlVXBkYXRlKENhY2hlVXBkYXRlJiYgb3RoZXIpCi17Ci0gICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8R2xvYmFsVXBkYXRlPihvdGhlci5tX3VwZGF0ZSkp
Ci0gICAgICAgIG5ldyAodGhpcykgQ2FjaGVVcGRhdGUoV1RGTW92ZShXVEY6OmdldDxHbG9iYWxV
cGRhdGU+KG90aGVyLm1fdXBkYXRlKSkpOwotICAgIGVsc2UKLSAgICAgICAgbmV3ICh0aGlzKSBD
YWNoZVVwZGF0ZShXVEZNb3ZlKFdURjo6Z2V0PEZ1bmN0aW9uVXBkYXRlPihvdGhlci5tX3VwZGF0
ZSkpKTsKLX0KK0NhY2hlVXBkYXRlOjpDYWNoZVVwZGF0ZShDYWNoZVVwZGF0ZSYmKSA9IGRlZmF1
bHQ7CiAKIENhY2hlVXBkYXRlJiBDYWNoZVVwZGF0ZTo6b3BlcmF0b3I9KENhY2hlVXBkYXRlJiYg
b3RoZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9MaWtlbHlEZW5zZVVuc2lnbmVk
SW50ZWdlclNldC5oIGIvU291cmNlL1dURi93dGYvTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJT
ZXQuaAppbmRleCAwMjEwZjk0MjhlNmNlNDJmM2UyZGFmZDAyODA3MGMxZmNkYjk0Yzc3Li43NDQy
YTQzMWEzODlkYWEyZDIwZjA1MjY3Y2Q5MTRlYzBlMmVhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9MaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0xpa2VseURlbnNlVW5zaWduZWRJbnRlZ2VyU2V0LmgKQEAgLTIwNSw4ICsyMDUsOCBAQCBw
dWJsaWM6CiAgICAgICAgIEluZGV4VHlwZSBvcGVyYXRvciooKSBjb25zdAogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3VuZGVybHlpbmcsCi0gICAgICAgICAg
ICAgICAgWyZdKGNvbnN0IEJpdFZlY3Rvcjo6aXRlcmF0b3ImIGl0KSB7IHJldHVybiAqaXQgKyBt
X3NoaWZ0OyB9LAotICAgICAgICAgICAgICAgIFtdKGNvbnN0IHR5cGVuYW1lIFNldDo6aXRlcmF0
b3ImIGl0KSB7IHJldHVybiAqaXQ7IH0pOworICAgICAgICAgICAgICAgIFsmXShjb25zdCBCaXRW
ZWN0b3I6Oml0ZXJhdG9yJiBpdCkgLT4gSW5kZXhUeXBlIHsgcmV0dXJuICppdCArIG1fc2hpZnQ7
IH0sCisgICAgICAgICAgICAgICAgW10oY29uc3QgdHlwZW5hbWUgU2V0OjppdGVyYXRvciYgaXQp
IC0+IEluZGV4VHlwZSB7IHJldHVybiAqaXQ7IH0pOwogICAgICAgICB9CiAKICAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1ZhcmlhbnQuaCBiL1NvdXJjZS9XVEYvd3RmL1ZhcmlhbnQuaAppbmRleCAz
Y2E3ZWJmZTlkMDQ3OTZkMGI4YTA1NjczY2NhMGZlMzE4ZTAyZDMyLi41MDNkOTE1ZmVhZTAxZDEz
YTFiNTNmZGJmNDU4YmE2MGZkOGIwNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WYXJp
YW50LmgKKysrIGIvU291cmNlL1dURi93dGYvVmFyaWFudC5oCkBAIC0yMzgsMTcgKzIzOCwxNyBA
QCBjb25zdGV4cHIgY29uc3QgdHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LCBfVHlwZXMu
Li4+OjpfX3R5cGUgJiYKIGdldChWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QgJiYpOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6
YWRkX3BvaW50ZXJfdDxfVHlwZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiYpOworY29uc3Rl
eHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiop
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3Rl
eHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVz
Li4uPiBjb25zdCYpOworY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZSBjb25zdD4g
Z2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCopOwogCiB0ZW1wbGF0ZTxwdHJkaWZmX3Qg
X0luZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXM+Ci1jb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90
PHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5cGU+IGdldF9p
ZihWYXJpYW50PF9UeXBlcy4uLj4mKTsKK2NvbnN0ZXhwciBzdGQ6OmFkZF9wb2ludGVyX3Q8dHlw
ZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LCBfVHlwZXMuLi4+OjpfX3R5cGU+IGdldF9pZihW
YXJpYW50PF9UeXBlcy4uLj4qKTsKIAogdGVtcGxhdGU8cHRyZGlmZl90IF9JbmRleCx0eXBlbmFt
ZSAuLi4gX1R5cGVzPgogY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlbmFtZSBfX2lu
ZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlIGNvbnN0PiBnZXRfaWYoCi0gICAg
VmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0Jik7CisgICAgVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0
Kik7CiAKIHRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4KIHN0
cnVjdCBfX3ZhcmlhbnRfYWNjZXNzb3I7CkBAIC0xODIyLDI2ICsxODIyLDI2IEBAIGNvbnN0ZXhw
ciBjb25zdCB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBl
JiYgZ2V0KFZhcmlhbnQ8CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4u
LiBfVHlwZXM+Ci1jb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PF9UeXBlPiBnZXRfaWYoVmFy
aWFudDxfVHlwZXMuLi4+JiBfX3YpewotICAgIHJldHVybiAoX190eXBlX2luZGV4PF9UeXBlLF9U
eXBlcy4uLj46Ol9fdmFsdWUhPV9fdi5pbmRleCgpKT9udWxscHRyOnN0ZDo6YWRkcmVzc29mKGdl
dDxfVHlwZT4oX192KSk7Citjb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PF9UeXBlPiBnZXRf
aWYoVmFyaWFudDxfVHlwZXMuLi4+KiBfX3YpIHsKKyAgICByZXR1cm4gKF9fdHlwZV9pbmRleDxf
VHlwZSwgX1R5cGVzLi4uPjo6X192YWx1ZSAhPSBfX3YtPmluZGV4KCkpID8gbnVsbHB0ciA6IHN0
ZDo6YWRkcmVzc29mKGdldDxfVHlwZT4oKl9fdikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxf
VHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYgX192KXsKLSAgICBy
ZXR1cm4gKF9fdHlwZV9pbmRleDxfVHlwZSxfVHlwZXMuLi4+OjpfX3ZhbHVlIT1fX3YuaW5kZXgo
KSk/bnVsbHB0cjpzdGQ6OmFkZHJlc3NvZihnZXQ8X1R5cGU+KF9fdikpOworY29uc3RleHByIHN0
ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBj
b25zdCogX192KSB7CisgICAgcmV0dXJuIChfX3R5cGVfaW5kZXg8X1R5cGUsIF9UeXBlcy4uLj46
Ol9fdmFsdWUgIT0gX192LT5pbmRleCgpKSA/IG51bGxwdHIgOiBzdGQ6OmFkZHJlc3NvZihnZXQ8
X1R5cGU+KCpfX3YpKTsKIH0KIAogdGVtcGxhdGU8cHRyZGlmZl90IF9JbmRleCx0eXBlbmFtZSAu
Li4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlbmFtZSBfX2luZGV4
ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlPiBnZXRfaWYoVmFyaWFudDxfVHlwZXMu
Li4+JiBfX3YpewotICAgIHJldHVybiAoKF9JbmRleCE9X192LmluZGV4KCkpP251bGxwdHI6Ci0g
ICAgICAgIHN0ZDo6YWRkcmVzc29mKF9fdmFyaWFudF9hY2Nlc3NvcjxfSW5kZXgsX1R5cGVzLi4u
Pjo6Z2V0KF9fdikpKTsKK2NvbnN0ZXhwciBzdGQ6OmFkZF9wb2ludGVyX3Q8dHlwZW5hbWUgX19p
bmRleGVkX3R5cGU8X0luZGV4LCBfVHlwZXMuLi4+OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9U
eXBlcy4uLj4qIF9fdikgeworICAgIHJldHVybiAoKF9JbmRleCAhPSBfX3YtPmluZGV4KCkpID8g
bnVsbHB0ciA6CisgICAgICAgIHN0ZDo6YWRkcmVzc29mKF9fdmFyaWFudF9hY2Nlc3NvcjxfSW5k
ZXgsIF9UeXBlcy4uLj46OmdldCgqX192KSkpOwogfQogCiB0ZW1wbGF0ZTxwdHJkaWZmX3QgX0lu
ZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXM+Ci1jb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PHR5
cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5cGUgY29uc3Q+IGdl
dF9pZigKLSAgICBWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QmIF9fdil7Ci0gICAgcmV0dXJuICgo
X0luZGV4IT1fX3YuaW5kZXgoKSk/bnVsbHB0cjoKLSAgICAgICAgc3RkOjphZGRyZXNzb2YoX192
YXJpYW50X2FjY2Vzc29yPF9JbmRleCxfVHlwZXMuLi4+OjpnZXQoX192KSkpOworY29uc3RleHBy
IHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsIF9UeXBl
cy4uLj46Ol9fdHlwZSBjb25zdD4gZ2V0X2lmKAorICAgIFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25z
dCogX192KSB7CisgICAgcmV0dXJuICgoX0luZGV4ICE9IF9fdi0+aW5kZXgoKSkgPyBudWxscHRy
IDoKKyAgICAgICAgc3RkOjphZGRyZXNzb2YoX192YXJpYW50X2FjY2Vzc29yPF9JbmRleCwgX1R5
cGVzLi4uPjo6Z2V0KCpfX3YpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVu
YW1lIC4uLiBfVHlwZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCmluZGV4IGUxOTA0ZGJiNzZhZDIwMmNjNjNmNmEyNjdmODBlOTRlZTE5Njdi
NjYuLjI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMjksMjIg
KzEyOSwyMiBAQCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcgogCiBSZXNwb25zZUJvZHkgaXNvbGF0
ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewotICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7Cisg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0
ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewor
ICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9k
eSB7CiAgICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKLSAgICB9LCBbXShjb25zdCBzdGQ6
Om51bGxwdHJfdCYpIHsKKyAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3Bv
bnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsg
fTsKICAgICB9KTsKIH0KIAogUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVz
cG9uc2VCb2R5JiBib2R5KQogewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNv
bnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
Ym9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZmZXIuY29w
eVJlZigpOwotICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeworICAgIH0sIFtdKGNv
bnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERP
TUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBlZjZkYTA0OTg5
OGViYWQ4MWU2Nzc1ODFmMGQxMmJkMzM4ZjYxMjUzLi44ODRjOGI4NzgzOTE5OTBjMzc3NWMyMWM4
M2MwMTExM2NjMDgxYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIFJlc291cmNlRXJyb3IgRmV0Y2hC
b2R5T3duZXI6OmxvYWRpbmdFcnJvcigpIGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
PiBGZXRjaEJvZHlPd25lcjo6bG9hZGluZ0V4Y2VwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9sb2FkaW5nRXJyb3IsIFtdKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9sb2FkaW5nRXJyb3IsIFtdKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gewogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBlcnJvci5zYW5pdGl6ZWREZXNjcmlw
dGlvbigpIH07Ci0gICAgfSwgW10oY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pIHsKKyAgICB9
LCBbXShjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikgLT4gc3RkOjpvcHRpb25hbDxFeGNlcHRp
b24+IHsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbiB9OwogICAgIH0sIFtd
KGF1dG8mJikgLT4gc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IHsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHAKaW5kZXggNTRlNzhiYWNiZmI1OWE2YjRkNmFjYzNiM2RlYmRlOTdiYjhhMjZjNC4u
OWFmZGQ5ZTBjMGJjY2MwNWVlY2NhYWQ1NDliMGE3Yzc1YzlkMGUzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTIwNiw5ICsyMDYs
OSBAQCB1aW50NjRfdCBJREJSZXF1ZXN0Ojpzb3VyY2VPYmplY3RTdG9yZUlkZW50aWZpZXIoKSBj
b25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291
cmNlLnZhbHVlKCksCi0gICAgICAgIFtdIChjb25zdCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+JiBv
YmplY3RTdG9yZSkgeyByZXR1cm4gb2JqZWN0U3RvcmUtPmluZm8oKS5pZGVudGlmaWVyKCk7IH0s
Ci0gICAgICAgIFtdIChjb25zdCBSZWZQdHI8SURCSW5kZXg+JiBpbmRleCkgeyByZXR1cm4gaW5k
ZXgtPmluZm8oKS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKTsgfSwKLSAgICAgICAgW10gKGNvbnN0
IFJlZlB0cjxJREJDdXJzb3I+JikgeyByZXR1cm4gMDsgfQorICAgICAgICBbXSAoY29uc3QgUmVm
UHRyPElEQk9iamVjdFN0b3JlPiYgb2JqZWN0U3RvcmUpIC0+IHVpbnQ2NF90IHsgcmV0dXJuIG9i
amVjdFN0b3JlLT5pbmZvKCkuaWRlbnRpZmllcigpOyB9LAorICAgICAgICBbXSAoY29uc3QgUmVm
UHRyPElEQkluZGV4PiYgaW5kZXgpIC0+IHVpbnQ2NF90IHsgcmV0dXJuIGluZGV4LT5pbmZvKCku
b2JqZWN0U3RvcmVJZGVudGlmaWVyKCk7IH0sCisgICAgICAgIFtdIChjb25zdCBSZWZQdHI8SURC
Q3Vyc29yPiYpIC0+IHVpbnQ2NF90IHsgcmV0dXJuIDA7IH0KICAgICApOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmNwcAppbmRleCBkMDljYjdkYTViYzg2Zjc5ZTMzZmU0OTE5ZjQ5N2QwZGRhZDdkZjYw
Li5kMmFlMDA1MzBhMjQ1YTRkMmIyYzU2NGMxOTY2NTU3YTg1MWVjZmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xz
SG9zdC5jcHAKQEAgLTY4MSwxMyArNjgxLDEzIEBAIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OnNo
b3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoSFRNTEVsZW1lbnQmIHRhcmdldCwgU3RyaW5nCiAj
ZW5kaWYgLy8gRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgICAgICAgICAgWyZd
IChSZWZQdHI8QXVkaW9UcmFjaz4mIHNlbGVjdGVkQXVkaW9UcmFjaykgewogICAgICAgICAgICAg
ICAgIGZvciAoYXV0byYgdHJhY2sgOiBpZE1hcC52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogYXVkaW9UcmFjayA9IFdURjo6Z2V0X2lmPFJlZlB0cjxBdWRpb1RyYWNr
Pj4odHJhY2spKQorICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYXVkaW9UcmFjayA9IFdU
Rjo6Z2V0X2lmPFJlZlB0cjxBdWRpb1RyYWNrPj4oJnRyYWNrKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICgqYXVkaW9UcmFjayktPnNldEVuYWJsZWQoKmF1ZGlvVHJhY2sgPT0gc2VsZWN0ZWRB
dWRpb1RyYWNrKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgWyZdIChSZWZQdHI8VGV4dFRyYWNrPiYgc2VsZWN0ZWRUZXh0VHJhY2spIHsKICAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogaWRNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIHRleHRUcmFjayA9IFdURjo6Z2V0X2lmPFJlZlB0cjxUZXh0VHJh
Y2s+Pih0cmFjaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiB0ZXh0VHJhY2sgPSBX
VEY6OmdldF9pZjxSZWZQdHI8VGV4dFRyYWNrPj4oJnRyYWNrKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICgqdGV4dFRyYWNrKS0+c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50LnNldFNlbGVj
dGVkVGV4dFRyYWNrKHNlbGVjdGVkVGV4dFRyYWNrLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggM2M3NmM1N2E4YjczNWRiMGU1YjE4OGNmMmU0NmZjZTJmOWE5ZTM1MS4uZmUxYTAxZWRjZGY5
ZDgwYWUwZTUyNzgyOGNjNjkxYmQyOTIzNTQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTMzMSw3
ICszMzEsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjphZGRJY2VDYW5kaWRhdGUoQ2FuZGlk
YXRlJiYgcnRjQ2FuZGlkYXRlLCBSZWY8RGVmZXJyZWRQcgogICAgIHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uPiBleGNlcHRpb247CiAgICAgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4gY2FuZGlkYXRl
OwogICAgIGlmIChydGNDYW5kaWRhdGUpIHsKLSAgICAgICAgY2FuZGlkYXRlID0gc3dpdGNoT24o
KnJ0Y0NhbmRpZGF0ZSwgWyZleGNlcHRpb25dKFJUQ0ljZUNhbmRpZGF0ZUluaXQmIGluaXQpIC0+
IFJlZlB0cjxSVENJY2VDYW5kaWRhdGU+IHsKKyAgICAgICAgY2FuZGlkYXRlID0gV1RGOjpzd2l0
Y2hPbigqcnRjQ2FuZGlkYXRlLCBbJmV4Y2VwdGlvbl0oUlRDSWNlQ2FuZGlkYXRlSW5pdCYgaW5p
dCkgLT4gUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4gewogICAgICAgICAgICAgaWYgKGluaXQuY2Fu
ZGlkYXRlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zv
cm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zv
cm0uY3BwCmluZGV4IGRhZjg5N2VhNDcyMTg2ZDZjYzdiN2FkNjIyZGZmNjZmYTYxNzc1NmIuLjAx
ZjBlMDFjYmQ0NWNjNjIyNzU1MTRiMDZhZjMzZTk5ZDI2MDI3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKQEAg
LTUyLDcgKzUyLDcgQEAgUlRDUnRwVHJhbnNmb3JtOjp+UlRDUnRwVHJhbnNmb3JtKCkKIAogYm9v
bCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQoKSBjb25zdAogewotICAgIHJldHVybiBzd2l0
Y2hPbihtX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+
JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3RyYW5zZm9y
bSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zv
cm0pIHsKICAgICAgICAgcmV0dXJuIHNmcmFtZVRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpOwogICAg
IH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNm
b3JtKSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRUcmFuc2Zvcm0tPmlzQXR0YWNoZWQoKTsKQEAg
LTEzMSwxNCArMTMxLDE0IEBAIHZvaWQgUlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVy
KFJUQ1J0cFNlbmRlciYpCiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0m
IGEsIGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYgYikKIHsKLSAgICByZXR1cm4gc3dpdGNoT24oYS5t
X3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJh
bWVUcmFuc2Zvcm1BKSB7Ci0gICAgICAgIHJldHVybiBzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBb
Jl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybUIp
IHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihhLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVm
UHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybUEpIHsKKyAgICAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENS
dHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm1CKSB7CiAgICAgICAgICAgICByZXR1
cm4gc2ZyYW1lVHJhbnNmb3JtQS5nZXQoKSA9PSBzZnJhbWVUcmFuc2Zvcm1CLmdldCgpOwogICAg
ICAgICB9LCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mKSB7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0pOwogICAgIH0sIFsmXShjb25zdCBSZWZQ
dHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtQSkgewotICAgICAgICBy
ZXR1cm4gc3dpdGNoT24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJh
bWVUcmFuc2Zvcm0+JikgeworICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihiLm1fdHJhbnNm
b3JtLCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mKSB7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2Ny
aXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtQikgewogICAgICAgICAgICAgcmV0dXJuIHNj
cmlwdFRyYW5zZm9ybUEuZ2V0KCkgPT0gc2NyaXB0VHJhbnNmb3JtQi5nZXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKaW5kZXggZDAwNzE4MmFl
MTc2MjQwMTQ1YmY0ZjIxMGRjMmQ4ZjlmYWUxMTkzYS4uYzk5OTIyMDNhNWJkNWQxNzkyOTlhZjg3
Njk1ODVhMmUyMTYyZWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZC5jcHAKQEAgLTU5LDE3ICs1OSw2IEBAIExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ6On5MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kKCkKICAgICBzdG9wU291cmNlKCk7CiB9CiAK
LXN0YXRpYyBib29sIG9wZXJhdG9yPT0oY29uc3QgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6
U291cmNlJiBhLCBjb25zdCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpTb3VyY2UmIGIpCi17
Ci0gICAgcmV0dXJuIHN3aXRjaE9uKGEsIFsmYl0oY29uc3QgUmVmPFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZT4mIHNvdXJjZSkgewotICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPj4oYikgJiYgc291cmNlLnB0cigp
ID09IFdURjo6Z2V0PFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+PihiKS5wdHIoKTsK
LSAgICB9LCBbJmJdKGNvbnN0IFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiBzb3Vy
Y2UpIHsKLSAgICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZT4+KGIpICYmIHNvdXJjZS5wdHIoKSA9PSBXVEY6OmdldDxSZWY8
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPj4oYikucHRyKCk7Ci0gICAgfSwgWyZiXShzdGQ6
Om51bGxwdHJfdCkgewotICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6
Om51bGxwdHJfdD4oYik7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZDo6c3RhcnRTb3VyY2UoKQogewogICAgIC8vIFdlIGFzeW5jaHJvbm91c2x5IHN0YXJ0IHRo
ZSBzb3VyY2VzIHRvIGd1YXJhbnRlZSBtZWRpYSBnb2VzIHRocm91Z2ggdGhlIHRyYW5zZm9ybSBp
ZiBhIHRyYW5zZm9ybSBpcyBzZXQgd2hlbiBjcmVhdGluZyB0aGUgdHJhY2suCkBAIC0xODQsNyAr
MTczLDcgQEAgdm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRNZWRpYVN0cmVhbUlk
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyZWFtSWQKIAogUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjp2aWRlb1NvdXJjZSgpCiB7Ci0gICAg
cmV0dXJuIHN3aXRjaE9uKG1fc291cmNlLAorICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291
cmNlLAogICAgICAgICBbXShSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiYgc291cmNl
KSB7IHJldHVybiBzb3VyY2UucHRyKCk7IH0sCiAgICAgICAgIFtdKGNvbnN0IGF1dG8mKSAtPiBS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UqIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICApOwpA
QCAtMTkyLDcgKzE4MSw3IEBAIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZDo6dmlkZW9Tb3VyY2UoKQogCiBib29sIExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ6Omhhc1NvdXJjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXRjaE9uKG1fc291
cmNlLAorICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLAogICAgICAgICBbXShjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsgcmV0dXJuIGZhbHNlOyB9LAogICAgICAgICBbXShjb25zdCBh
dXRvJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA3ZTdmNjlkYzVhODU2OWI0NjM3NDFlNjcwNGQ1YWU2
NjAwM2FlODU1Li5jZDcxYjM5MTE1Nzg1NTliOWFmYmQ0MzgzODQ2MjEyNDNiZDU5MDNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTE4NCw3ICsx
ODQsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPj4gV2ViWFJGcmFtZTo6
Z2V0Vmlld2VyUG9zZShjb25zdCBEb2N1bWVudCYgZAogICAgICAgICBhdXRvIHRyYW5zZm9ybSA9
IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShwb3NlLT50cmFuc2Zvcm0oKS5yYXdUcmFuc2Zv
cm0oKSAqIG9mZnNldCk7CiAKICAgICAgICAgLy8gU2V0IHByb2plY3Rpb24gbWF0cml4IGZvciBl
YWNoIHZpZXcKLSAgICAgICAgc3RkOjphcnJheTxmbG9hdCwgMTY+IHByb2plY3Rpb24gPSBzd2l0
Y2hPbihmcmFtZURhdGEudmlld3NbaW5kZXhdLnByb2plY3Rpb24sIFsmXShjb25zdCBQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92JiBmb3YpIHsKKyAgICAgICAgc3RkOjphcnJheTxm
bG9hdCwgMTY+IHByb2plY3Rpb24gPSBXVEY6OnN3aXRjaE9uKGZyYW1lRGF0YS52aWV3c1tpbmRl
eF0ucHJvamVjdGlvbiwgWyZdKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpG
b3YmIGZvdikgewogICAgICAgICAgICAgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0
YXRlKCkuZGVwdGhOZWFyKCk7CiAgICAgICAgICAgICBkb3VibGUgZmFyID0gbV9zZXNzaW9uLT5y
ZW5kZXJTdGF0ZSgpLmRlcHRoRmFyKCk7CiAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRp
b25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGZvdi51cCwgZm92LmRvd24sIGZvdi5sZWZ0LCBmb3Yu
cmlnaHQsIG5lYXIsIGZhcikudG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcAppbmRleCA3OGIxNWNi
OGIwN2IyYzBlM2MxMGQ4MWM3NTdiZWFjNzZjMTUzMDczLi5mM2FiN2UxYjE5M2FiN2E4ZTg4N2Fh
NmRhMWU1YWU0YjZkNzU5ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSV2ViR0xMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIFdlYlhSV2ViR0xMYXllcjo6Y2FudmFzKCkgY29uc3QKICAgICAgICAgYXV0byBjYW52YXMg
PSBiYXNlQ29udGV4dC0+Y2FudmFzKCk7CiAgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNh
bnZhcywgW10oY29uc3QgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYgY2FudmFzKSB7CiAgICAg
ICAgICAgICByZXR1cm4gY2FudmFzLmdldCgpOwotICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8
T2Zmc2NyZWVuQ2FudmFzPikgeworICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8T2Zmc2NyZWVu
Q2FudmFzPikgLT4gSFRNTENhbnZhc0VsZW1lbnQqIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgiYmFzZUxheWVyIG9mIGEgV2ViWFJXZWJHTExheWVyIG11c3QgYmUgYW4gSFRNTENh
bnZhc0VsZW1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggZWJhNTE5MjcyNjJkY2I0NTNjYzIzNDg4
MGIzN2U5Nzk0MDE2ZmZjMC4uYzcxNmIzYjdmZTFlYjJkYzM0OTRiNjU5N2I1NzMwYzFjNDgwYTUz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTc4MSw3ICs3ODEsNyBAQCBJbnRQ
b2ludCBBWElzb2xhdGVkT2JqZWN0OjppbnRQb2ludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgYwogewogICAgIGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdl
dChwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAgICAg
ICBbXSAoSW50UG9pbnQmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAg
ICAgIFtdIChJbnRQb2ludCYgdHlwZWRWYWx1ZSkgLT4gSW50UG9pbnQgeyByZXR1cm4gdHlwZWRW
YWx1ZTsgfSwKICAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBJbnRQb2ludCgpOyB9CiAgICAg
KTsKIH0KQEAgLTc5MCw3ICs3OTAsNyBAQCBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6
Om9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogewogICAg
IGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIEFYSUQg
bm9kZUlEID0gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKEFYSUQmIHR5cGVkVmFs
dWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChBWElEJiB0eXBlZFZhbHVl
KSAtPiBBWElEIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyBy
ZXR1cm4gSW52YWxpZEFYSUQ7IH0KICAgICApOwogCkBAIC04MDIsNyArODAyLDcgQEAgVCBBWElz
b2xhdGVkT2JqZWN0OjpyZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSBjb25zdAogewogICAgIGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0
eU5hbWUpOwogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAgICAgICBbXSAoVCYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKFQmIHR5cGVk
VmFsdWUpIC0+IFQgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKICAgICAgICAgW10gKGF1dG8mKSB7
IHJldHVybiBUIHsgfTsgfQogICAgICk7CiB9CkBAIC04MTIsNyArODEyLDcgQEAgVmVjdG9yPFQ+
IEFYSXNvbGF0ZWRPYmplY3Q6OnZlY3RvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgY28KIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJv
cGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10g
KFZlY3RvcjxUPiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAg
W10gKFZlY3RvcjxUPiYgdHlwZWRWYWx1ZSkgLT4gVmVjdG9yPFQ+IHsgcmV0dXJuIHR5cGVkVmFs
dWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gVmVjdG9yPFQ+KCk7IH0KICAgICAp
OwogfQpAQCAtODIyLDcgKzgyMiw3IEBAIE9wdGlvblNldDxUPiBBWElzb2xhdGVkT2JqZWN0Ojpv
cHRpb25TZXRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiB7CiAgICAg
YXV0byB2YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtdIChUJiB0eXBlZFZhbHVlKSB7IHJldHVy
biB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoVCYgdHlwZWRWYWx1ZSkgLT4gT3B0aW9uU2V0
PFQ+IHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4g
T3B0aW9uU2V0PFQ+KCk7IH0KICAgICApOwogfQpAQCAtODMyLDcgKzgzMiw3IEBAIHN0ZDo6cGFp
cjxULCBUPiBBWElzb2xhdGVkT2JqZWN0OjpwYWlyQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lCiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHBy
b3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtd
IChzdGQ6OnBhaXI8VCwgVD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisg
ICAgICAgIFtdIChzdGQ6OnBhaXI8VCwgVD4mIHR5cGVkVmFsdWUpIC0+IHN0ZDo6cGFpcjxULCBU
PiB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAogICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIHN0
ZDo6cGFpcjxULCBUPigwLCAxKTsgfQogICAgICk7CiB9CkBAIC04NDEsOCArODQxLDggQEAgdWlu
dDY0X3QgQVhJc29sYXRlZE9iamVjdDo6dWludDY0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSBjb24KIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5n
ZXQocHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAg
ICAgW10gKHVpbnQ2NF90JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAotICAg
ICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgW10gKHVpbnQ2NF90JiB0eXBl
ZFZhbHVlKSAtPiB1aW50NjRfdCB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAo
YXV0byYpIC0+IHVpbnQ2NF90IHsgcmV0dXJuIDA7IH0KICAgICApOwogfQogCkBAIC04NTAsNyAr
ODUwLDcgQEAgVVJMIEFYSXNvbGF0ZWRPYmplY3Q6OnVybEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0
eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwK
LSAgICAgICAgW10gKFVSTCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAg
ICAgICAgW10gKFVSTCYgdHlwZWRWYWx1ZSkgLT4gVVJMIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0s
CiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gVVJMKCk7IH0KICAgICApOwogfQpAQCAtODU5
LDcgKzg1OSw3IEBAIFBhdGggQVhJc29sYXRlZE9iamVjdDo6cGF0aEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9w
cm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2
YWx1ZSwKLSAgICAgICAgW10gKFBhdGgmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7
IH0sCisgICAgICAgIFtdIChQYXRoJiB0eXBlZFZhbHVlKSAtPiBQYXRoIHsgcmV0dXJuIHR5cGVk
VmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgKTsK
IH0KQEAgLTg2OCw3ICs4NjgsNyBAQCBDb2xvciBBWElzb2xhdGVkT2JqZWN0Ojpjb2xvckF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBhdXRv
IHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKENvbG9yJiB0eXBlZFZhbHVlKSB7IHJldHVy
biB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoQ29sb3ImIHR5cGVkVmFsdWUpIC0+IENvbG9y
IHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gQ29s
b3IoKTsgfQogICAgICk7CiB9CkBAIC04NzcsOCArODc3LDggQEAgZmxvYXQgQVhJc29sYXRlZE9i
amVjdDo6ZmxvYXRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNv
bnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtdIChmbG9hdCYgdHlw
ZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKLSAgICAgICAgW10gKGF1dG8mKSB7IHJl
dHVybiAwOyB9CisgICAgICAgIFtdIChmbG9hdCYgdHlwZWRWYWx1ZSkgLT4gZmxvYXQgeyByZXR1
cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwLjBmOyB9CiAg
ICAgKTsKIH0KIApAQCAtODg2LDggKzg4Niw4IEBAIGRvdWJsZSBBWElzb2xhdGVkT2JqZWN0Ojpk
b3VibGVBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7
CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtdIChkb3VibGUmIHR5cGVkVmFs
dWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCi0gICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4g
MDsgfQorICAgICAgICBbXSAoZG91YmxlJiB0eXBlZFZhbHVlKSAtPiBkb3VibGUgeyByZXR1cm4g
dHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwLjA7IH0KICAgICAp
OwogfQogCkBAIC04OTUsOCArODk1LDggQEAgdW5zaWduZWQgQVhJc29sYXRlZE9iamVjdDo6dW5z
aWduZWRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGMKIHsKICAg
ICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKHVuc2lnbmVkJiB0eXBlZFZhbHVl
KSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAotICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIDA7
IH0KKyAgICAgICAgW10gKHVuc2lnbmVkJiB0eXBlZFZhbHVlKSAtPiB1bnNpZ25lZCB7IHJldHVy
biB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIDB1OyB9CiAgICAg
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggNTc0NWUyYTRmZTc5NzBj
ZTRkZjM1MTJmMGEwNjgyOGUwNjBkM2FiYy4uYzhiNzU3YzlmYzZhNTI0ZmYxNmNmNjBjYzY2ZWU5
MGFhMGFjNTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8d3RmL0JyaWdhbmQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNp
ZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiV2ViR0xBbnkuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAppbmRleCBkZDI5Njg4YzJiYzZj
ODgwMDU0ZTE4N2YxZDMwOWFhODkwNjJlODg2Li45MjJhYTcxMzdmOTQ1MjI0MDBiYTkwY2Q5N2U3
ZTg1ZjUyOWFlYjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRXZWJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0V2ViR0wuY3BwCkBAIC04MCw0OSArODAsMzkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IEpTVmFsdWUgY29udmVydFRvSlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgV2ViR0xBbnkmIGFu
eSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihhbnksCi0gICAgICAgIFtdIChzdGQ6Om51
bGxwdHJfdCkgeworICAgICAgICBbXSAoc3RkOjpudWxscHRyX3QpIC0+IEpTVmFsdWUgewogICAg
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICB9LAotICAgICAgICBbXSAoYm9vbCB2
YWx1ZSkgeworICAgICAgICB9LCBbXSAoYm9vbCB2YWx1ZSkgLT4gSlNWYWx1ZSB7CiAgICAgICAg
ICAgICByZXR1cm4ganNCb29sZWFuKHZhbHVlKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10gKGlu
dCB2YWx1ZSkgeworICAgICAgICB9LCBbXSAoaW50IHZhbHVlKSAtPiBKU1ZhbHVlIHsKICAgICAg
ICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdICh1
bnNpZ25lZCB2YWx1ZSkgeworICAgICAgICB9LCBbXSAodW5zaWduZWQgdmFsdWUpIC0+IEpTVmFs
dWUgewogICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgfSwKLSAg
ICAgICAgW10gKGxvbmcgbG9uZyB2YWx1ZSkgeworICAgICAgICB9LCBbXSAobG9uZyBsb25nIHZh
bHVlKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIFtdIChmbG9hdCB2YWx1ZSkgeworICAgICAgICB9LCBbXSAoZmxv
YXQgdmFsdWUpIC0+IEpTVmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVl
KTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdIChjb25zdCBTdHJpbmcmIHZhbHVlKSB7CisgICAg
ICAgIH0sIFsmXSAoY29uc3QgU3RyaW5nJiB2YWx1ZSkgLT4gSlNWYWx1ZSB7CiAgICAgICAgICAg
ICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCB2YWx1
ZSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGJvb2w+JiB2YWx1ZXMp
IHsKKyAgICAgICAgfSwgWyZdIChjb25zdCBWZWN0b3I8Ym9vbD4mIHZhbHVlcykgLT4gSlNWYWx1
ZSB7CiAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwogICAgICAgICAgICAg
Zm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlcykKICAgICAgICAgICAgICAgICBsaXN0LmFwcGVuZChq
c0Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsaXN0Lmhhc092
ZXJmbG93ZWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoJmdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8SlNDOjpBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciks
IGxpc3QpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxpbnQ+JiB2YWx1
ZXMpIHsKKyAgICAgICAgfSwgWyZdIChjb25zdCBWZWN0b3I8aW50PiYgdmFsdWVzKSAtPiBKU1Zh
bHVlIHsKICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHZhbHVlIDogdmFsdWVzKQogICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5k
KGpzTnVtYmVyKHZhbHVlKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbGlzdC5oYXNP
dmVyZmxvd2VkKCkpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KCZnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PEpTQzo6QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIp
LCBsaXN0KTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8dW5zaWduZWQ+
JiB2YWx1ZXMpIHsKKyAgICAgICAgfSwgWyZdIChjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiB2YWx1
ZXMpIC0+IEpTVmFsdWUgewogICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsK
ICAgICAgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiB2YWx1ZXMpCiAgICAgICAgICAgICAgICAg
bGlzdC5hcHBlbmQoanNOdW1iZXIodmFsdWUpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFsaXN0Lmhhc092ZXJmbG93ZWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0QXJy
YXkoJmdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8SlNDOjpBcnJheUFsbG9jYXRpb25Qcm9maWxl
Kj4obnVsbHB0ciksIGxpc3QpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKGNvbnN0IFJlZlB0
cjxGbG9hdDMyQXJyYXk+JiBhcnJheSkgeworICAgICAgICB9LCBbJl0gKGNvbnN0IFJlZlB0cjxG
bG9hdDMyQXJyYXk+JiBhcnJheSkgewogICAgICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxH
bG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QsIGFycmF5LmdldCgpKTsKICAgICAgICAgfSwKICAg
ICAgICAgWyZdIChjb25zdCBSZWZQdHI8SW50MzJBcnJheT4mIGFycmF5KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFu
Z2VFdmVudEN1c3RvbS5jcHAKaW5kZXggMGJkMWQ0ZDFhZDg1NTJlZDc0M2JjYWIyZTFiOGYyYTMw
ZDYwNTlmMC4uZWFiZWJiMzI4MWFlZTNlZDliMGNhYTdhYmRkMmVkMDU2YTNkYzE1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYXltZW50TWV0aG9kQ2hhbmdlRXZl
bnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGF5bWVudE1l
dGhvZENoYW5nZUV2ZW50Q3VzdG9tLmNwcApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBKU0M6OkpTVmFsdWUgSlNQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Om1ldGhvZERl
dGFpbHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKIHsK
ICAgICByZXR1cm4gY2FjaGVkUHJvcGVydHlWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhp
cywgd3JhcHBlZCgpLmNhY2hlZE1ldGhvZERldGFpbHMoKSwgW3RoaXMsICZsZXhpY2FsR2xvYmFs
T2JqZWN0XSB7Ci0gICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHdyYXBwZWQoKS5tZXRob2RE
ZXRhaWxzKCksIFtdKEpTQzo6SlNWYWx1ZSBtZXRob2REZXRhaWxzKSB7CisgICAgICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKHdyYXBwZWQoKS5tZXRob2REZXRhaWxzKCksIFtdKEpTQzo6SlNWYWx1
ZSBtZXRob2REZXRhaWxzKSAtPiBKU0M6OkpTVmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIG1l
dGhvZERldGFpbHMgPyBtZXRob2REZXRhaWxzIDogSlNDOjpqc051bGwoKTsKLSAgICAgICAgfSwg
WyZsZXhpY2FsR2xvYmFsT2JqZWN0XShjb25zdCBQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Ok1l
dGhvZERldGFpbHNGdW5jdGlvbiYgZnVuY3Rpb24pIHsKKyAgICAgICAgfSwgWyZsZXhpY2FsR2xv
YmFsT2JqZWN0XShjb25zdCBQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Ok1ldGhvZERldGFpbHNG
dW5jdGlvbiYgZnVuY3Rpb24pIC0+IEpTQzo6SlNWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCkuZ2V0KCk7CiAgICAgICAgIH0pOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9i
amVjdC5oCmluZGV4IGQ3ZTUyYjFiMWQxNmQyY2IxNzIyOTQzYTJiNmUwOGRhNTI0M2QzM2YuLmU0
Y2NkYmE2MmQ4NDgzYTc0MGNhN2EwNDNkMmJhZWM5Y2M1MTZhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmFsdWVJbldyYXBwZWRPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgKQEAgLTgyLDcg
KzgyLDcgQEAgaW5saW5lIEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6Om9wZXJhdG9yIEpTQzo6SlNW
YWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV92YWx1ZSwgW10gKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkgewogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfSwgW10gKGNv
bnN0IFdlYWsmIHZhbHVlKSB7CisgICAgfSwgW10gKGNvbnN0IFdlYWsmIHZhbHVlKSAtPiBKU0M6
OkpTVmFsdWUgewogICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ0
ZWI4MTYyZWU1MGFmZGFmZjNjNDk0OWJhZjE3YWEwMzZkMmRmNGYuLmFlYTFiOTMyYmNjMjA3YWY1
NzAxYjlhOTFmYWQ0MDViM2Y5MDg5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC05MTgsNyArOTE4LDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUZvbnRWYXJpYW50Q1NTMjEoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmEKIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVGb250
V2VpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChhdXRvIHJlc3Vs
dCA9IGNvbnN1bWVGb250V2VpZ2h0UmF3KHJhbmdlKSkgewotICAgICAgICByZXR1cm4gc3dpdGNo
T24oKnJlc3VsdCwgW10gKENTU1ZhbHVlSUQgdmFsdWVJRCkgeworICAgICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbigqcmVzdWx0LCBbXSAoQ1NTVmFsdWVJRCB2YWx1ZUlEKSB7CiAgICAgICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
dmFsdWVJRCk7CiAgICAgICAgIH0sIFtdIChkb3VibGUgd2VpZ2h0TnVtYmVyKSB7CiAgICAgICAg
ICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh3ZWlnaHRO
dW1iZXIsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVu
dC5jcHAKaW5kZXggMzJjZmQwZDY3ZjM4NGIwN2FlM2Y3MGFmN2NjNmU1YjVkNTEwMWI0Yy4uZTRm
MTk0YmZhMmIyZjI4OWEyZjhkMzNkMTI5MTcyMzM3N2VlZGNjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5jcHAKQEAgLTEyOSwxNSArMTI5LDE1IEBAIEV2ZW50SW50ZXJmYWNlIE1lc3Nh
Z2VFdmVudDo6ZXZlbnRJbnRlcmZhY2UoKSBjb25zdAogCiBzaXplX3QgTWVzc2FnZUV2ZW50Ojpt
ZW1vcnlDb3N0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2RhdGEsIFtd
IChjb25zdCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JikgeworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fZGF0YSwgW10gKGNvbnN0IEpTVmFsdWVJbldyYXBwZWRPYmplY3QmKSAtPiBzaXplX3Qg
ewogICAgICAgICByZXR1cm4gMDsKLSAgICB9LCBbXSAoY29uc3QgUmVmPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mIGRhdGEpIHsKKyAgICB9LCBbXSAoY29uc3QgUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mIGRhdGEpIC0+IHNpemVfdCB7CiAgICAgICAgIHJldHVybiBkYXRhLT5tZW1vcnlDb3N0
KCk7Ci0gICAgfSwgW10gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CisgICAgfSwgW10gKGNvbnN0
IFN0cmluZyYgc3RyaW5nKSAtPiBzaXplX3QgewogICAgICAgICByZXR1cm4gc3RyaW5nLnNpemVJ
bkJ5dGVzKCk7Ci0gICAgfSwgW10gKGNvbnN0IFJlZjxCbG9iPiYgYmxvYikgeworICAgIH0sIFtd
IChjb25zdCBSZWY8QmxvYj4mIGJsb2IpIC0+IHNpemVfdCB7CiAgICAgICAgIHJldHVybiBibG9i
LT5zaXplKCk7Ci0gICAgfSwgW10gKGNvbnN0IFJlZjxBcnJheUJ1ZmZlcj4mIGJ1ZmZlcikgewor
ICAgIH0sIFtdIChjb25zdCBSZWY8QXJyYXlCdWZmZXI+JiBidWZmZXIpIC0+IHNpemVfdCB7CiAg
ICAgICAgIHJldHVybiBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAppbmRleCA1NjU3ODI3ZDlhNjZiYjNiNzNlZmI1NWY5MzE2MWVlODM4
YjQ1YTMwLi5mMTRlOTNiZjZiNzViMDFkNTliMWY0MjVjZWVlYTBjYjZlZTk4MGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yMjczLDcgKzIyNzMsNyBAQCB2b2lkIEVkaXRvcjo6
YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAKICAg
ICBpZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gZm91bmRJ
dGVtID0gVGV4dENoZWNraW5nSGVscGVyKCpjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hSYW5nZSku
ZmluZEZpcnN0TWlzc3BlbGxlZFdvcmRPclVuZ3JhbW1hdGljYWxQaHJhc2UoaXNHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKCkpOwotICAgICAgICBpZiAoYXV0byB3b3JkID0gV1RGOjpnZXRfaWY8VGV4
dENoZWNraW5nSGVscGVyOjpNaXNzcGVsbGVkV29yZD4oZm91bmRJdGVtKSkKKyAgICAgICAgaWYg
KGF1dG8qIHdvcmQgPSBXVEY6OmdldF9pZjxUZXh0Q2hlY2tpbmdIZWxwZXI6Ok1pc3NwZWxsZWRX
b3JkPigmZm91bmRJdGVtKSkKICAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gV1RGTW92ZSgq
d29yZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVuZ3JhbW1hdGljYWxQaHJhc2UgPSBX
VEY6OmdldDxUZXh0Q2hlY2tpbmdIZWxwZXI6OlVuZ3JhbW1hdGljYWxQaHJhc2U+KFdURk1vdmUo
Zm91bmRJdGVtKSk7CkBAIC0yMzAwLDcgKzIzMDAsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIAogICAg
ICAgICBpZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBhdXRv
IGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcigqY2xpZW50KCksIHNwZWxsaW5nU2VhcmNo
UmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsZWRXb3JkT3JVbmdyYW1tYXRpY2FsUGhyYXNlKGlzR3Jh
bW1hckNoZWNraW5nRW5hYmxlZCgpKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHdvcmQgPSBXVEY6
OmdldF9pZjxUZXh0Q2hlY2tpbmdIZWxwZXI6Ok1pc3NwZWxsZWRXb3JkPihmb3VuZEl0ZW0pKQor
ICAgICAgICAgICAgaWYgKGF1dG8qIHdvcmQgPSBXVEY6OmdldF9pZjxUZXh0Q2hlY2tpbmdIZWxw
ZXI6Ok1pc3NwZWxsZWRXb3JkPigmZm91bmRJdGVtKSkKICAgICAgICAgICAgICAgICBtaXNzcGVs
bGVkV29yZCA9IFdURk1vdmUoKndvcmQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHVuZ3JhbW1hdGljYWxQaHJhc2UgPSBXVEY6OmdldDxUZXh0Q2hlY2tpbmdIZWxwZXI6OlVu
Z3JhbW1hdGljYWxQaHJhc2U+KFdURk1vdmUoZm91bmRJdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGZj
OWQ3MTU1NDM3M2ZkYzc4NWRjYTQ2Y2ZkNWVkZjhhZjJhNTM1MjcuLmMzNzJhZWNlZjRlOTdmYjNi
MWMxM2ZlZWJhYTVkNzRmMTg5ZGNlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIGJvb2wgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXI6OkV4Y2x1c2lvblJ1bGU6Om1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHN3aXRjaE9uKHJ1bGUsIFsmZWxlbWVudF0gKEVsZW1lbnRSdWxlIHJ1bGUp
IHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihydWxlLCBbJmVsZW1lbnRdIChFbGVtZW50UnVs
ZSBydWxlKSB7CiAgICAgICAgIHJldHVybiBydWxlLmxvY2FsTmFtZSA9PSBlbGVtZW50LmxvY2Fs
TmFtZSgpOwogICAgIH0sIFsmZWxlbWVudF0gKEF0dHJpYnV0ZVJ1bGUgcnVsZSkgewogICAgICAg
ICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50LmdldEF0dHJpYnV0ZShydWxl
Lm5hbWUpLCBydWxlLnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
U2VhcmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNw
cAppbmRleCBiMDdiNzgwOGRmYWQ1OWMzZDU0MDlmNTcyMDJhN2IxMjkxODIyYjJmLi4zNGY1Yzkx
NTlhYmRjM2M1ZmY3MjIwOGZmMzc1MWQxYTc3MjMxNTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxTZWFyY2hQYXJhbXMuY3BwCkBAIC01MSw5ICs1MSw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxVUkxT
ZWFyY2hQYXJhbXM+PiBVUkxTZWFyY2hQYXJhbXM6OmNyZWF0ZShWYXJpYW50PFZlY3RvcjxWZWN0
b3I8CiAgICAgICAgICAgICBwYWlycy5hcHBlbmQoe3BhaXJbMF0sIHBhaXJbMV19KTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMoV1RGTW92
ZShwYWlycykpKTsKLSAgICB9LCBbJl0oY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0
cmluZywgU3RyaW5nPj4mIHBhaXJzKSB7CisgICAgfSwgWyZdKGNvbnN0IFZlY3RvcjxXVEY6Oktl
eVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYWlycykgLT4gRXhjZXB0aW9uT3I8UmVmPFVS
TFNlYXJjaFBhcmFtcz4+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMU2VhcmNo
UGFyYW1zKHBhaXJzKSk7Ci0gICAgfSwgWyZdKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7CisgICAg
fSwgWyZdKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAtPiBFeGNlcHRpb25PcjxSZWY8VVJMU2VhcmNo
UGFyYW1zPj4gewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMo
c3RyaW5nLCBudWxscHRyKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRv
ciwgdmFyaWFudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
Y3BwCmluZGV4IGUyOTk2Y2I5MjVjYzVlYTRkM2UyOGQxYzVkOTU2MzA1ZjIwZGVlNWYuLmY4MzFj
NmRkYjU3ZjI1MWEzY2ZjN2ZjMzcyNWU3MDc3YWMwYjkzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgSW5zcGVj
dG9yQ2FudmFzOjpJbnNwZWN0b3JDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCkKIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSW5zcGVjdG9yQ2FudmFzOjpjYW52YXNDb250
ZXh0KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogY29udGV4dFdyYXBwZXIgPSBXVEY6OmdldF9p
ZjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+PihtX2NvbnRl
eHQpKQorICAgIGlmIChhdXRvKiBjb250ZXh0V3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4+KCZtX2NvbnRleHQpKQogICAg
ICAgICByZXR1cm4gJmNvbnRleHRXcmFwcGVyLT5nZXQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KQEAgLTEyNCw4ICsxMjQsNyBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5zcGVjdG9yQ2FudmFz
OjpjYW52YXNFbGVtZW50KCkgY29uc3QKICAgICAgICAgICAgIGlmIChpczxIVE1MQ2FudmFzRWxl
bWVudD4oY29udGV4dC5jYW52YXNCYXNlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiAmZG93
bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNvbnRleHQuY2FudmFzQmFzZSgpKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9LAotICAgICAgICBbXSAoTW9ub3N0YXRlKSB7
CisgICAgICAgIH0sIFtdIChNb25vc3RhdGUpIC0+IEhUTUxDYW52YXNFbGVtZW50KiB7CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9CkBAIC0xMzksOCArMTM4LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
SW5zcGVjdG9yQ2FudmFzOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAgICAg
W10gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4gY29udGV4
dFdyYXBwZXIpIHsKICAgICAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBjb250ZXh0V3JhcHBlci5n
ZXQoKTsKICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIChNb25vc3RhdGUpIHsKKyAg
ICAgICAgfSwgW10gKE1vbm9zdGF0ZSkgLT4gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogewogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgfQpAQCAtODkzLDggKzg5MSw3IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFzOjpD
YW52YXM+IEluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0dXJl
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFByb3RvY29sOjpDYW52YXM6OkNvbnRleHRUeXBlOjpX
ZWJHTDI7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IH0sCi0gICAgICAgIFtdIChNb25vc3RhdGUpIHsKKyAgICAgICAgfSwgW10gKE1vbm9zdGF0ZSkg
LT4gQ29udGV4dFR5cGVUeXBlIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQpAQCAtOTIwLDggKzkx
Nyw3IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFzOjpDYW52YXM+IEluc3BlY3RvckNhbnZhczo6YnVp
bGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0dXJlCiAgICAgYXV0byBjb250ZXh0QXR0cmlidXRl
cyA9IFdURjo6c3dpdGNoT24obV9jb250ZXh0LAogICAgICAgICBbXSAoc3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxDYW52YXNSZW5kZXJpbmdDb250ZXh0PiBjb250ZXh0V3JhcHBlcikgewogICAgICAg
ICAgICAgcmV0dXJuIGJ1aWxkT2JqZWN0Rm9yQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMoY29udGV4
dFdyYXBwZXIpOwotICAgICAgICB9LAotICAgICAgICBbXSAoTW9ub3N0YXRlKSB7CisgICAgICAg
IH0sIFtdIChNb25vc3RhdGUpIC0+IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6
OkNvbnRleHRBdHRyaWJ1dGVzPiB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CkBAIC0xMDQwLDggKzEwMzYs
OCBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlh
bnQgZGF0YSkKICAgICAgICAgaWYgKGRhdGEgPT0gaXRlbSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgICAgIGF1dG8gdHJhY2VBID0gV1RGOjpnZXRfaWY8UmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4+KGRhdGEpOwotICAgICAgICBhdXRvIHRyYWNlQiA9IFdURjo6Z2V0X2lmPFJlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+PihpdGVtKTsKKyAgICAgICAgYXV0byB0cmFjZUEgPSBXVEY6Omdl
dF9pZjxSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPj4oJmRhdGEpOworICAgICAgICBhdXRvIHRyYWNl
QiA9IFdURjo6Z2V0X2lmPFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+PigmaXRlbSk7CiAgICAgICAg
IGlmICh0cmFjZUEgJiYgKnRyYWNlQSAmJiB0cmFjZUIgJiYgKnRyYWNlQikKICAgICAgICAgICAg
IHJldHVybiAoKnRyYWNlQSktPmlzRXF1YWwoKCp0cmFjZUIpLmdldCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4
IGEzMGUyMTY0M2ExNTdhODJjNWRkN2U1YjRkODU4NDBiNzRmYTUwMTYuLjg0NDRiNDcxNjY3NjVj
YzgzZjU2NThjZmM4OWNkYjU0MGRlY2Q0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbShXZWJHTFByb2dyYW0m
IHByb2dyYW0sIEluc3BlY3RvckMKICNpZiBFTkFCTEUoV0VCR0wpCiBXZWJHTFByb2dyYW0qIElu
c3BlY3RvclNoYWRlclByb2dyYW06OnByb2dyYW0oKSBjb25zdAogewotICAgIGlmIChhdXRvKiBw
cm9ncmFtV3JhcHBlciA9IFdURjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR0xQ
cm9ncmFtPj4obV9wcm9ncmFtKSkKKyAgICBpZiAoYXV0byogcHJvZ3JhbVdyYXBwZXIgPSBXVEY6
OmdldF9pZjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4+KCZtX3Byb2dyYW0p
KQogICAgICAgICByZXR1cm4gJnByb2dyYW1XcmFwcGVyLT5nZXQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGZk
OWVjNzU5NzM3ZDRjOTc1OTgzMWU3NzI0MzU5YmUyZTg2NjI0MzAuLmQxMDcwODI0NGZhMDNmMzgz
YzU1Nzk5MWI0Njc1M2JmZDIzYTJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcApAQCAtMzQxLDE4ICszNDEsMTggQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVy
bmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZp
c2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgeyByZXR1cm4g
ZGF0YS5kYXRhKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCiAjaWYgVVNFKENGKQot
ICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZE
YXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRy
PENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5
dGVQdHIoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgW10o
Y29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAg
ICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5n
ZXQoKSwgbnVsbHB0cikpOyB9LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAg
W10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gZGF0
YS0+ZGF0YSgpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCiAj
ZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCi0g
ICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4gcHJvdmlkZXIuZGF0
YSgpOyB9CisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRh
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQogICAgICk7CiAgICAg
cmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQyNSwx
OCArNDI1LDE4IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgb3RoZXIpIGNvbnN0CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6
ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsg
fSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyBy
ZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0
KCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4g
c2l6ZV90IHsgcmV0dXJuIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKTsgfSwKICNlbmRpZgog
I2lmIFVTRShHTElCKQotICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsg
cmV0dXJuIGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0
IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGdfYnl0ZXNfZ2V0X3Np
emUoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBb
XShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiBkYXRh
LT5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLT5zaXplKCk7IH0sCiAjZW5kaWYKLSAg
ICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJu
IGRhdGEuc2l6ZSgpOyB9LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIHsg
cmV0dXJuIHByb3ZpZGVyLnNpemUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LAor
ICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IHNpemVfdCB7IHJldHVybiBw
cm92aWRlci5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAKaW5kZXggZjZiZmRkN2Y1ZjczMzdlZTFmMTAzNjVjNWUyMDEzMTg1YTdl
MmY4YS4uNzhlMWNiNGNlODcxOTdlNDY3YzE2YzE0Y2JlNjIxMzZiMGZlNjlkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDQsNyArNDQs
NyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIFJldGFpblB0
cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBp
ZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgewotICAgICAgICBpZiAoYXV0byBkYXRhID0gV1RG
OjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9p
bW11dGFibGVEYXRhKSkKKyAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBXVEY6OmdldF9pZjxSZXRh
aW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRh
KSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9CiAgICAgYXV0byBjZkRhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7CkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0
CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAg
aWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBk
YXRhID0gV1RGOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KGVudHJ5LnNlZ21lbnQtPm1f
aW1tdXRhYmxlRGF0YSkpCisgICAgICAgICAgICBpZiAoYXV0byogZGF0YSA9IFdURjo6Z2V0X2lm
PFJldGFpblB0cjxDRkRhdGFSZWY+PigmZW50cnkuc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkK
ICAgICAgICAgICAgICAgICBPU0FsbG9jYXRvcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oY29u
c3RfY2FzdDxVSW50OCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS0+Z2V0KCkpKSwgQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEtPmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRl
eCA5YjYzMGRiZDI3ZGYxZjRkODkyZTdlZGYwMDU0MmU0NWNmNTliNmVlLi42YTRhZmVjMjgyNGRi
ZDk2ZmNjNDc0OTFjYmJkYTlhODNhZDQ0MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIE5vZGUgPSBWYXJpYW50PFZlY3Rvcjx1aW50OF90Piwg
Ym9vbCwgdWludDMyX3QsIHVpbnQ2NF90LCBpbnQzMl90LCBpbnQ2NF90LCBmbG9hdCwgZG91Ymxl
LCBTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Piwgc3RkOjp1bmlxdWVfcHRyPEFy
cmF5Pj47CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFkZChjb25zdCBT
dHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4o
c3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CisgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBr
ZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KICAgICBOb2RlKiBnZXQo
Y29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIG1fbWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6
CkBAIC0yMjMsNyArMjIzLDcgQEAgY29uc3QgVCogS2V5ZWREZWNvZGVyR2VuZXJpYzo6Z2V0UG9p
bnRlckZyb21EaWN0aW9uYXJ5U3RhY2soY29uc3QgU3RyaW5nJiBrZXkpCiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXVEY6OmdldF9pZjxUPigq
bm9kZSk7CisgICAgcmV0dXJuIFdURjo6Z2V0X2lmPFQ+KCZub2RlKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggYzQ1ZDAzYzUxMWE5ZDFjNTU4NzNjYzRkZmI0MGU5NDY2MDhiZjZkMC4uNTYx
ZjNmZDczZjc4OTFkOTE3YWNkMjZhZjllMTAxN2EyYmQyZmI3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEwMTYsNyArMTAxNiw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAg
SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4+JiB0cmFja3MgPSAq
Z2V0PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+KHZhcmlh
bnRUcmFja3MpOworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5
cGU+PiYgdHJhY2tzID0gKldURjo6Z2V0PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNr
UHJpdmF0ZVR5cGU+Pio+KHZhcmlhbnRUcmFja3MpOwogCiAgICAgLy8gSWdub3JlIG5vdGlmaWNh
dGlvbnMgYWZ0ZXIgYSBFT1MuIFdlIGRvbid0IHdhbnQgdGhlIHRyYWNrcyB0byBkaXNhcHBlYXIg
d2hlbiB0aGUgdmlkZW8gaXMgZmluaXNoZWQuCiAgICAgaWYgKG1faXNFbmRSZWFjaGVkICYmICh0
eXBlID09IFRyYWNrVHlwZTo6QXVkaW8gfHwgdHlwZSA9PSBUcmFja1R5cGU6OlZpZGVvKSkKQEAg
LTEwNzEsMTYgKzEwNzEsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5v
dGlmeVBsYXllck9mVHJhY2soKQogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlk
KCkpOwogICAgICAgICB0cmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOwogCi0g
ICAgICAgIFZhcmlhbnQ8QXVkaW9UcmFja1ByaXZhdGUmLCBWaWRlb1RyYWNrUHJpdmF0ZSYsIElu
YmFuZFRleHRUcmFja1ByaXZhdGUmPiB2YXJpYW50VHJhY2sodHJhY2suZ2V0KCkpOworICAgICAg
ICBWYXJpYW50PEF1ZGlvVHJhY2tQcml2YXRlKiwgVmlkZW9UcmFja1ByaXZhdGUqLCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlKj4gdmFyaWFudFRyYWNrKCZ0cmFjay5nZXQoKSk7CiAgICAgICAgIHN3
aXRjaCAodmFyaWFudFRyYWNrLmluZGV4KCkpIHsKICAgICAgICAgY2FzZSBUcmFja1R5cGU6OkF1
ZGlvOgotICAgICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soZ2V0PEF1ZGlvVHJhY2tQ
cml2YXRlJj4odmFyaWFudFRyYWNrKSk7CisgICAgICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9U
cmFjaygqV1RGOjpnZXQ8QXVkaW9UcmFja1ByaXZhdGUqPih2YXJpYW50VHJhY2spKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRyYWNrVHlwZTo6VmlkZW86Ci0gICAgICAgICAg
ICBtX3BsYXllci0+YWRkVmlkZW9UcmFjayhnZXQ8VmlkZW9UcmFja1ByaXZhdGUmPih2YXJpYW50
VHJhY2spKTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKCpXVEY6OmdldDxW
aWRlb1RyYWNrUHJpdmF0ZSo+KHZhcmlhbnRUcmFjaykpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgVHJhY2tUeXBlOjpUZXh0OgotICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRl
eHRUcmFjayhnZXQ8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOworICAg
ICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjaygqV1RGOjpnZXQ8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSo+KHZhcmlhbnRUcmFjaykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcAppbmRleCAwMDI0NjUxMmVkZjM2YjNkZWE0YzU5NWUyNWU4YzEyMGYyYWMzOGFmLi5iZDVl
ZGI5NjRjYzg5NTYxNTZlMGYwYWU2NDJhYzczNjViNDYyY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTgzLDEyICs4MywxMiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Qml0bWFw
VGV4dHVyZUdMJj4oY2xvbmVkVGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUo
dGV4dHVyZS5pZCk7CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZShjbG9uZWRUZXh0dXJlKSwgbV9leHRyYUZsYWdz
KTsKICAgICAgICAgfSwKLSAgICAgICAgW10oY29uc3QgWVVWVGV4dHVyZSYpCisgICAgICAgIFtd
KGNvbnN0IFlVVlRleHR1cmUmKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKLSAgICAgICAgW10oY29u
c3QgRXh0ZXJuYWxPRVNUZXh0dXJlJikKKyAgICAgICAgW10oY29uc3QgRXh0ZXJuYWxPRVNUZXh0
dXJlJikgLT4gc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PgogICAgICAgICB7CiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tNZWRpYURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVk
aWFEZXZpY2UuaAppbmRleCA0NjdkOTEzOTQ0NDNlZmEyODM2M2E4NmE4ZDU0ZmQyYzQ0NTg1M2Nh
Li5hMjNkNzAxMzI1YmY1Nzg3YzAwM2Y5OTdiYjEyZDBkNDc5ZmM1NDRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKQEAgLTIwMSw3ICsyMDEs
NyBAQCBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlIHsKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwg
cGVyc2lzdGVudElkOwogICAgICAgICBlbmNvZGVyIDw8IGxhYmVsOwotICAgICAgICBzd2l0Y2hP
bihwcm9wZXJ0aWVzLCBbJl0oY29uc3QgTW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzJiBwcm9wZXJ0
aWVzKSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocHJvcGVydGllcywgWyZdKGNvbnN0IE1vY2tN
aWNyb3Bob25lUHJvcGVydGllcyYgcHJvcGVydGllcykgewogICAgICAgICAgICAgZW5jb2RlciA8
PCAodWludDhfdCkxOwogICAgICAgICAgICAgZW5jb2RlciA8PCBwcm9wZXJ0aWVzOwogICAgICAg
ICB9LCBbJl0oY29uc3QgTW9ja1NwZWFrZXJQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGNlOWU5ZjUw
YWM0ZTY4ZDhlYWY2NjNiZjg2MTU4ZjRmZGM2MmU1MmIuLmFhNWZhYWI0ZTU3N2M2YmJmNzg3Nzk5
OTViN2UxZjkxNzZhZWZlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdW5zaWduZWQgRm9ybURhdGE6OmltYWdl
T3JNZWRpYUZpbGVzQ291bnQoKSBjb25zdAogewogICAgIHVuc2lnbmVkIGltYWdlT3JNZWRpYUZp
bGVzQ291bnQgPSAwOwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAg
ICAgICAgYXV0byogZW5jb2RlZEZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSk7CisgICAgICAgIGF1dG8qIGVuY29kZWRG
aWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPigm
ZWxlbWVudC5kYXRhKTsKICAgICAgICAgaWYgKCFlbmNvZGVkRmlsZURhdGEpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIApAQCAtMTQwLDcgKzE0MCw3IEBAIHVuc2lnbmVkIEZvcm1EYXRhOjppbWFn
ZU9yTWVkaWFGaWxlc0NvdW50KCkgY29uc3QKIAogdWludDY0X3QgRm9ybURhdGFFbGVtZW50Ojps
ZW5ndGhJbkJ5dGVzKGNvbnN0IEZ1bmN0aW9uPHVpbnQ2NF90KGNvbnN0IFVSTCYpPiYgYmxvYlNp
emUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXRjaE9uKGRhdGEsCisgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24oZGF0YSwKICAgICAgICAgW10gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMp
IHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnl0ZXMuc2l6ZSgp
KTsKICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
JiBmaWxlRGF0YSkgewpAQCAtMTYyLDcgKzE2Miw3IEBAIHVpbnQ2NF90IEZvcm1EYXRhRWxlbWVu
dDo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAKIEZvcm1EYXRhRWxlbWVudCBGb3JtRGF0YUVsZW1l
bnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXRjaE9uKGRhdGEsCisg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZGF0YSwKICAgICAgICAgW10gKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgYnl0ZXMpIHsKICAgICAgICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQoVmVj
dG9yIHsgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkgfSk7CiAgICAgICAgIH0sIFtdIChjb25z
dCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKQEAgLTE3Nyw3
ICsxNzcsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIW1fZWxlbWVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBX
VEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KG1fZWxlbWVudHMubGFzdCgpLmRhdGEpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KCZt
X2VsZW1lbnRzLmxhc3QoKS5kYXRhKSkgewogICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjkzLDcgKzI5Myw3IEBAIFZlY3Rvcjx1aW50OF90PiBGb3JtRGF0
YTo6ZmxhdHRlbigpIGNvbnN0CiAgICAgLy8gQ29uY2F0ZW5hdGUgYWxsIHRoZSBieXRlIGFycmF5
cywgYnV0IG9taXQgYW55IGZpbGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3Rv
ciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKKyAgICAgICAg
aWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oJmVsZW1lbnQu
ZGF0YSkpCiAgICAgICAgICAgICBkYXRhLmFwcGVuZCh2ZWN0b3ItPmRhdGEoKSwgdmVjdG9yLT5z
aXplKCkpOwogICAgIH0KICAgICByZXR1cm4gZGF0YTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBGb3Jt
RGF0YUZvclVwbG9hZCBGb3JtRGF0YTo6cHJlcGFyZUZvclVwbG9hZCgpCiB7CiAgICAgVmVjdG9y
PFN0cmluZz4gZ2VuZXJhdGVkRmlsZXM7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVt
ZW50cykgewotICAgICAgICBhdXRvKiBmaWxlRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxl
bWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50LmRhdGEpOworICAgICAgICBhdXRvKiBmaWxl
RGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPigmZWxl
bWVudC5kYXRhKTsKICAgICAgICAgaWYgKCFmaWxlRGF0YSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhmaWxl
RGF0YS0+ZmlsZW5hbWUpICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpCkBAIC00
MjUsNyArNDI1LDcgQEAgVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdAogICAgIGlmICht
X2VsZW1lbnRzLnNpemUoKSAhPSAxKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgaWYgKGF1
dG8qIGJsb2JEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRh
dGE+KG1fZWxlbWVudHMuZmlyc3QoKS5kYXRhKSkKKyAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBX
VEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oJm1fZWxlbWVudHMu
Zmlyc3QoKS5kYXRhKSkKICAgICAgICAgcmV0dXJuIGJsb2JEYXRhLT51cmw7CiAgICAgcmV0dXJu
IHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDBiOThlYjc1ZDkwZjdmNzMzMzIyZDI4
Njg5OGZhNjYyMzY3YjQxZWEuLjQyYTE2ZmUzNjBjYWM2NzBmZDgzMmYyZjdkMjI4OGZmZWFhNGYy
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBib29s
IGFkdmFuY2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgLy8gQ3Jl
YXRlIHRoZSBuZXcgc3RyZWFtLgogICAgIEZvcm1EYXRhRWxlbWVudCYgbmV4dElucHV0ID0gZm9y
bS0+cmVtYWluaW5nRWxlbWVudHMubGFzdCgpOwogCi0gICAgYm9vbCBzdWNjZXNzID0gc3dpdGNo
T24obmV4dElucHV0LmRhdGEsCisgICAgYm9vbCBzdWNjZXNzID0gV1RGOjpzd2l0Y2hPbihuZXh0
SW5wdXQuZGF0YSwKICAgICAgICAgW2Zvcm1dIChWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAg
ICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGJ5dGVzLnNpemUoKTsKICAgICAgICAgICAgIE1hbGxv
Y1B0cjx1aW50OF90LCBXVEY6OlZlY3Rvck1hbGxvYz4gZGF0YSA9IGJ5dGVzLnJlbGVhc2VCdWZm
ZXIoKTsKQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJl
cXVlc3RSZWYgcmVxdWVzdCwgRm9ybURhdGEqIGZvcm1EYXRhKQogICAgIC8vIEhhbmRsZSB0aGUg
Y29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5vIGZp
bGVzLgogICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7CiAgICAgaWYg
KGVsZW1lbnRzLnNpemUoKSA9PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oZWxl
bWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lm
PFZlY3Rvcjx1aW50OF90Pj4oJmVsZW1lbnRzWzBdLmRhdGEpKSB7CiAgICAgICAgICAgICBhdXRv
IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCB2ZWN0b3ItPmRhdGEoKSwgdmVj
dG9yLT5zaXplKCkpKTsKICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9k
eShyZXF1ZXN0LCBkYXRhLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4
IDI0ZDFjN2Q3MDY1MDE2ZTU1MmU5ZmM2ZTllZDkyOGE1MTAyOTJkNmMuLjViNWUyODIwZWUwMTIw
NDVjM2Y2ZjVjYjYxZjJjOTQ2NTUyMzFjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtMzUxLDcgKzM1MSw3IEBA
IHZvaWQgQ3VybEhhbmRsZTo6ZW5hYmxlU1NMRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCiAj
aWYgT1MoV0lORE9XUykKICAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX1NT
TF9PUFRJT05TLCBDVVJMU1NMT1BUX05BVElWRV9DQSk7CiAjZWxzZQotICAgIGlmIChhdXRvKiBw
YXRoID0gV1RGOjpnZXRfaWY8U3RyaW5nPihzc2xIYW5kbGUuZ2V0Q0FDZXJ0SW5mbygpKSkKKyAg
ICBpZiAoYXV0byogcGF0aCA9IFdURjo6Z2V0X2lmPFN0cmluZz4oJnNzbEhhbmRsZS5nZXRDQUNl
cnRJbmZvKCkpKQogICAgICAgICBzZXRDQUNlcnRQYXRoKHBhdGgtPnV0ZjgoKS5kYXRhKCkpOwog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IGNjOWFiMGJjMDg1NTFlZmYwN2Rm
NDMzYjc2M2I5OWU4NTFiN2Y5NDQuLjdhYTI2MmRjNzcxNjVkNmI3MjE5NmQ4ZWIxNmQ1Yzg5MmVl
OGQ5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNp
emVfdCBzaXplKQogICAgICAgICAgICAgICAgIHJldHVybiByZWFkRnJvbURhdGEoYnl0ZXMsIGJ1
ZmZlclBvc2l0aW9uLCBidWZmZXJTaXplKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9y
bURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlYWRGcm9tRmlsZShmaWxlRGF0YSwgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclNp
emUpOwotICAgICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJs
b2JEYXRhJikgeworICAgICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5j
b2RlZEJsb2JEYXRhJikgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKICAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAppbmRleCA4Yjc5YmUyYTI4NmU1MmJm
ZjZjYjI5OTE3NjBlMTZlMjdhMWI0NmMwLi5mYmIwZjVlOTU2Y2U4Y2FmYjRhYzE0OTRkNmYxNDFm
NzA4NjhhZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBDdXJsU1NMVmVy
aWZpZXI6OkN1cmxTU0xWZXJpZmllcih2b2lkKiBzc2xDdHgpCiAgICAgU1NMX0NUWF9zZXRfdmVy
aWZ5KGN0eCwgU1NMX0NUWF9nZXRfdmVyaWZ5X21vZGUoY3R4KSwgdmVyaWZ5Q2FsbGJhY2spOwog
CiAjaWYgZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKLSAgICBpZiAoYXV0byBkYXRh
ID0gV1RGOjpnZXRfaWY8Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZT4oc3NsSGFuZGxlLmdl
dENBQ2VydEluZm8oKSkpCisgICAgaWYgKGF1dG8gZGF0YSA9IFdURjo6Z2V0X2lmPENlcnRpZmlj
YXRlSW5mbzo6Q2VydGlmaWNhdGU+KCZzc2xIYW5kbGUuZ2V0Q0FDZXJ0SW5mbygpKSkKICAgICAg
ICAgU1NMX0NUWF9sb2FkX3ZlcmlmeV9tZW0oY3R4LCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3Rf
Y2FzdDx1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSksIGRhdGEtPnNpemUoKSk7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDUyM2QwZDIxODU3ZDkwNDhjNTZiYjhjMTAzZDhh
YTAwYmMxMGU2MDEuLjM4MzJlZjVhYjkxNDhiOGNjN2IzMGQ3Y2FhODZiZTI2OTZjODg1OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwg
QmxvYlJlZ2lzdAogICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUg
cGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVsZW1lbnRzID0g
Zm9ybURhdGEtPmVsZW1lbnRzKCk7CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxICYmICFm
b3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdU
Rjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oJmVsZW1lbnRz
WzBdLmRhdGEpKSB7CiAjaWYgVVNFKFNPVVAyKQogICAgICAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFS
WSwgdmVjdG9yLT5kYXRhKCksIHZlY3Rvci0+c2l6ZSgpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCmluZGV4IDcxYzc0Y2IwNjI0
NTJiZGMwMTlhMDA3NzQ5YTk0ODM2ZDQ2YTNhYjIuLjQyN2RkODg1NDhiZWY2NGY2MmM2ZTlmZmNi
YmIxOTIxMjc1MWY0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZUZvckZvbnRSYXcuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2Fz
Y2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2Nh
ZGUKICAgICB9CiAKICAgICBpZiAoZm9udFJhdy53ZWlnaHQpIHsKLSAgICAgICAgYXV0byB3ZWln
aHQgPSBzd2l0Y2hPbigqZm9udFJhdy53ZWlnaHQsIFsmXSAoQ1NTVmFsdWVJRCBpZGVudCkgewor
ICAgICAgICBhdXRvIHdlaWdodCA9IFdURjo6c3dpdGNoT24oKmZvbnRSYXcud2VpZ2h0LCBbJl0g
KENTU1ZhbHVlSUQgaWRlbnQpIHsKICAgICAgICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1h
bFdlaWdodFZhbHVlKCk7CkBAIC0xNzksNyArMTc5LDcgQEAgc3RkOjpvcHRpb25hbDxGb250Q2Fz
Y2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2Nh
ZGUKICAgICB9CiAKICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemVGcm9tSWRlbnRp
ZmllcihDU1NWYWx1ZUludmFsaWQpOwotICAgIGZsb2F0IHNpemUgPSBzd2l0Y2hPbihmb250UmF3
LnNpemUsIFsmXSAoQ1NTVmFsdWVJRCBpZGVudCkgeworICAgIGZsb2F0IHNpemUgPSBXVEY6OnN3
aXRjaE9uKGZvbnRSYXcuc2l6ZSwgWyZdIChDU1NWYWx1ZUlEIGlkZW50KSB7CiAgICAgICAgIHN3
aXRjaCAoaWRlbnQpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVh4U21hbGw6CiAgICAgICAgIGNh
c2UgQ1NTVmFsdWVYU21hbGw6CkBAIC0xOTksNyArMTk5LDcgQEAgc3RkOjpvcHRpb25hbDxGb250
Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENh
c2NhZGUKICAgICAgICAgICAgIHJldHVybiAwLmY7CiAgICAgICAgIH0KICAgICB9LCBbJl0gKGNv
bnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6TGVuZ3RoT3JQZXJjZW50UmF3JiBsZW5ndGhP
clBlcmNlbnQpIHsKLSAgICAgICAgcmV0dXJuIHN3aXRjaE9uKGxlbmd0aE9yUGVyY2VudCwgWyZd
IChjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Okxlbmd0aFJhdyYgbGVuZ3RoKSB7Cisg
ICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGxlbmd0aE9yUGVyY2VudCwgWyZdIChjb25zdCBD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Okxlbmd0aFJhdyYgbGVuZ3RoKSB7CiAgICAgICAgICAg
ICBhdXRvIGZvbnRDYXNjYWRlID0gRm9udENhc2NhZGUoRm9udENhc2NhZGVEZXNjcmlwdGlvbihm
b250RGVzY3JpcHRpb24pKTsKICAgICAgICAgICAgIGZvbnRDYXNjYWRlLnVwZGF0ZShjb250ZXh0
LmNzc0ZvbnRTZWxlY3RvcigpKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzaW5nIG51bGwg
Zm9yIHRoZSBSZW5kZXJWaWV3IHBhcmFtZXRlciBtZWFucyB0aGF0IHZ3IGFuZCB2aCB1bml0cyB3
aWxsIGV2YWx1YXRlIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGRiMTU1YWNh
M2Y3M2Q5NjUxMWYwMTAyOTBkNmEyMjE2NDlmOGM5ZjEuLjFjNjQ1ZjZmYzg0OWZjNzQ3ZDI1Yzhl
NTU4MTUxZWZiNjFmNDc1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00NzAs
NyArNDcwLDcgQEAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmUKICAgICBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzOwogICAgIGlmIChhdXRvKiBib2R5
ID0gbG9hZFBhcmFtZXRlcnMucmVxdWVzdC5odHRwQm9keSgpKSB7CiAgICAgICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IGJvZHktPmVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBi
bG9iRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhPihl
bGVtZW50LmRhdGEpKQorICAgICAgICAgICAgaWYgKGF1dG8qIGJsb2JEYXRhID0gV1RGOjpnZXRf
aWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGE+KCZlbGVtZW50LmRhdGEpKQogICAg
ICAgICAgICAgICAgIGZpbGVzLmFwcGVuZFZlY3RvcihibG9iUmVnaXN0cnkuZmlsZXNJbkJsb2Io
YmxvYkRhdGEtPnVybCkpOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0X2Nhc3Q8V2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jj4obG9hZFBhcmFtZXRlcnMucmVxdWVzdCkuc2V0SFRUUEJvZHkoYm9k
eS0+cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCZibG9iUmVnaXN0cnkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAKaW5kZXggZGRmOTZkZTAzM2M2NWY1NTIxZjNiYmJlODFkMTlhYzhlN2E1YmU5
ZC4uNGUwZmJjZDRlODdlM2YwZDBmZmM2NjIzZTA5NTEyZTNjZmY3Y2I2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAg
ICAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiByZXF1ZXN0Qm9keVNhbmRib3hF
eHRlbnNpb25zOwogICAgICAgICBmb3IgKGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6
IHJlcXVlc3QuaHR0cEJvZHkoKS0+ZWxlbWVudHMoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8q
IGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+
KGVsZW1lbnQuZGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6
Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPigmZWxlbWVudC5kYXRhKSkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRhLT5maWxlbmFt
ZTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQogICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZN
b3ZlKCpoYW5kbGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zv
cm1EYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJl
ZmVyZW5jZS5oCmluZGV4IGMyZDU4OTU5NWY1ZTM0MTBkMWFlYWY0MmJhN2FlZTIzOGY3MTU0MTcu
LmI0MzExZjM1YThjMzgwNjZmODUzMWFkYTIzODlmYjg5YTg4MWYxMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgVmVjdG9yPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogbV9kYXRhLT5lbGVtZW50cygpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZmlsZURhdGEg
PSBXVEY6OmdldF9pZjxXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4o
ZWxlbWVudC5kYXRhKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpn
ZXRfaWY8V2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KCZlbGVtZW50
LmRhdGEpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEt
PmZpbGVuYW1lOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZE9ubHkpKQogICAgICAgICAgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlcy5hcHBlbmQoV1RGTW92ZSgqaGFuZGxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vy
c29yLmNwcAppbmRleCA5NjJlMjExZTFiZjJjMTE4MjhiYmQ3ZTA3NDgyNjkwOWQwYzAzMzgwLi4z
NGNhYzA5NTFlM2RhZDY3YzQ2ZDQ5MzM3MDM1MWMwODNmYzY2YjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YVNhbXBsZUN1cnNvci5jcHAKQEAgLTE1MywxMyArMTUzLDExIEBAIHN0ZDo6b3B0aW9uYWw8dHlw
ZW5hbWUgT3JkZXJlZE1hcDo6aXRlcmF0b3I+IE1lZGlhU2FtcGxlQ3Vyc29yOjpsb2NhdGVJdGVy
YXRvcihPCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgICAgIHJldHVybiBsb2NhdGVJdGVyYXRvcihzYW1wbGVzLCBoYXNBbGxT
YW1wbGVzKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKGNvbnN0IGF1dG8mIG90aGVySXRlcmF0
b3IpIHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mIG90aGVySXRlcmF0b3IpIC0+IHN0ZDo6
b3B0aW9uYWw8SXRlcmF0b3I+IHsKICAgICAgICAgICAgIGFzc2VydElzSGVsZChtX2xvY2F0b3JM
b2NrKTsKICAgICAgICAgICAgIG1fbG9jYXRvciA9IG90aGVySXRlcmF0b3ItPnNlY29uZC0+cHJl
c2VudGF0aW9uVGltZSgpOwogICAgICAgICAgICAgcmV0dXJuIGxvY2F0ZUl0ZXJhdG9yKHNhbXBs
ZXMsIGhhc0FsbFNhbXBsZXMpOwotICAgICAgICB9LAotICAgICAgICBbJl0oY29uc3QgSXRlcmF0
b3ImIGl0ZXJhdG9yKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBJdGVyYXRvciYgaXRlcmF0b3Ip
IC0+IHN0ZDo6b3B0aW9uYWw8SXRlcmF0b3I+IHsKICAgICAgICAgICAgIHJldHVybiBpdGVyYXRv
cjsKICAgICAgICAgfQogICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAppbmRleCAwYjBlMjFlZWE4NmRlYjRk
ZjBiMmNhMDRmNTQyM2EyMmNlYjczNGU1Li44MmMxYmY4OTQxY2Q3YWJhNjU1ODNiMTNkZjNkNWEz
NWM2ZWMyYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaD4K
ICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9T
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaAppbmRleCA4MDZiMjU0ZTMwNzBiZTg0NGExYjIzOTEy
NDFkZTY3NWM5NGNhODRkLi4zYWEyNWZkMDY3OTc4MTYyMmYxMDY2NWM3NDdiY2Q3YzVmM2QxYjhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUg
PHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgKaW5k
ZXggNjFiZTM3MTdiODA2NDZhNmZhMzAxYjIyMzU0YWY3ODlhMjU0YTVlMC4uNDMxODljMGEzYTFl
OTU5NzgwY2FiMTJhZTI2YzhiNzdlZDUzNzA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4K
ICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRlZThlNzFkNjM1
MGQ1NWM4NzJkZDZiYzgyODRhMDEwODk2N2Q4OTcuLjBiZjZiZTUzNjU4MmI2OWMyMzgzMzk2Y2Vh
YzNjNmVkYmRmNzFlYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZy
b20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6dmFyaWFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6YWRkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCiAyMDIxLTEwLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgSW1wbGVtZW50IG1pc3NpbmcgZnVuY3Rpb25zIGluIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGFlbW9uQ2xpZW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aGVyLmNwcAppbmRleCA1OWUyMjU2MjRmYjNhNWZkNjUyY2QyYTJhMjQ5ZmE2NTM0ZDk2MDQ1Li44
NjQ4OTY4NTI1OGVmMWM5OGRjOTBiMjY1NDRjNGY0ZWNlZGVjNDg3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdHJ1Y3QgSGFz
aGVyQWRkQ3VzdG9tMiB7IH07CiAKIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBIYXNo
ZXJBZGRDdXN0b20yJikKIHsKLSAgICBhZGQoaGFzaGVyLCB7IDEsIDIsIDMsIDQgfSk7CisgICAg
YWRkKGhhc2hlciwgc3RkOjppbml0aWFsaXplcl9saXN0PGludD4geyAxLCAyLCAzLCA0IH0pOwog
fQogCiBURVNUKFdURiwgSGFzaGVyX2N1c3RvbSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVmFyaWFudC5jcHAKaW5kZXggNTFlY2EwNzY4ZDJjY2UxYzlhMzI5NTU1MmQzNTAwOWZmNGZk
NTZiYi4uMjg0NGJmZDM4NjExMTEzM2YwMTI5Zjk3NmU4ODA1ZTdkNjEzOGI0YyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKQEAgLTU2LDE2ICs1NiwxNiBAQCBU
RVNUKFdURl9WYXJpYW50LCBCYXNpYykKICAgICBWYXJpYW50PGludCwgZG91YmxlPiB2YXJpYW50
ID0gMTsKICAgICBFWFBFQ1RfVFJVRSh2YXJpYW50LmluZGV4KCkgPT0gMCk7CiAgICAgRVhQRUNU
X1RSVUUoV1RGOjpnZXQ8aW50Pih2YXJpYW50KSA9PSAxKTsKLSAgICBFWFBFQ1RfVFJVRSgqV1RG
OjpnZXRfaWY8aW50Pih2YXJpYW50KSA9PSAxKTsKLSAgICBFWFBFQ1RfVFJVRShXVEY6OmdldF9p
Zjxkb3VibGU+KHZhcmlhbnQpID09IG51bGxwdHIpOworICAgIEVYUEVDVF9FUSgqV1RGOjpnZXRf
aWY8aW50PigmdmFyaWFudCksIDEpOworICAgIEVYUEVDVF9FUShXVEY6OmdldF9pZjxkb3VibGU+
KCZ2YXJpYW50KSwgbnVsbHB0cik7CiAgICAgRVhQRUNUX1RSVUUoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxpbnQ+KHZhcmlhbnQpKTsKICAgICBFWFBFQ1RfRkFMU0UoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxkb3VibGU+KHZhcmlhbnQpKTsKIAogICAgIHZhcmlhbnQgPSAxLjA7CiAgICAgRVhQRUNU
X1RSVUUodmFyaWFudC5pbmRleCgpID09IDEpOwogICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0PGRv
dWJsZT4odmFyaWFudCkgPT0gMSk7Ci0gICAgRVhQRUNUX1RSVUUoKldURjo6Z2V0X2lmPGRvdWJs
ZT4odmFyaWFudCkgPT0gMS4wKTsKLSAgICBFWFBFQ1RfVFJVRShXVEY6OmdldF9pZjxpbnQ+KHZh
cmlhbnQpID09IG51bGxwdHIpOworICAgIEVYUEVDVF9FUSgqV1RGOjpnZXRfaWY8ZG91YmxlPigm
dmFyaWFudCksIDEuMCk7CisgICAgRVhQRUNUX0VRKFdURjo6Z2V0X2lmPGludD4oJnZhcmlhbnQp
LCBudWxscHRyKTsKICAgICBFWFBFQ1RfVFJVRShXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJs
ZT4odmFyaWFudCkpOwogICAgIEVYUEVDVF9GQUxTRShXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGlu
dD4odmFyaWFudCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440279</attachid>
            <date>2021-10-05 15:24:44 -0700</date>
            <delta_ts>2021-10-11 10:23:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231239-20211005152443.patch</filename>
            <type>text/plain</type>
            <size>74094</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDIxLTEwLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUHJlcGFyZSB0byBzd2l0Y2ggZnJvbSBXVEY6OlZhcmlhbnQgdG8gc3RkOjp2
YXJpYW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzEyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VIZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
cGFyc2VCaW5hcnkpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VPY3RhbCk6CisgICAg
ICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZURlY2ltYWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ2Fj
aGVQYXlsb2FkLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVQYXlsb2FkOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6Q2FjaGVQYXlsb2FkOjpzaXplIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0NhY2hlVXBkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVVcGRhdGU6OkNhY2hlVXBk
YXRlKToKKwogMjAyMS0xMC0wNSAgWGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtKU0NdWzMyYml0XSBGaXggYnVncyBhZnRlciB1bmxpbmtlZCBiYXNlbGluZSBqaXQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1NDgsMTMgKzEwNTQ4LDE0IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUKIAogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSBhIHdheSB0byBjYWxsIGZ1bmN0aW9ucyB3aXRoIHRoZSB2ZWN0b3Igb2Yg
cmVnaXN0ZXJzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjMwOTkKLSAgICBWZWN0b3I8VmFyaWFudDxTcGVjdWxhdGVDZWxsT3BlcmFuZCwgU3BlY3Vs
YXRlSW50MzJPcGVyYW5kLCBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4sIEpTQ19ET01KSVRfU0lH
TkFUVVJFX01BWF9BUkdVTUVOVFNfSU5DTFVESU5HX1RISVM+IG9wZXJhbmRzOworICAgIHVzaW5n
IE9wZXJhbmRWYXJpYW50ID0gVmFyaWFudDxTcGVjdWxhdGVDZWxsT3BlcmFuZCwgU3BlY3VsYXRl
SW50MzJPcGVyYW5kLCBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD47CisgICAgVmVjdG9yPE9wZXJh
bmRWYXJpYW50LCBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTX0lOQ0xVRElOR19U
SElTPiBvcGVyYW5kczsKICAgICBWZWN0b3I8R1BSUmVnLCBKU0NfRE9NSklUX1NJR05BVFVSRV9N
QVhfQVJHVU1FTlRTX0lOQ0xVRElOR19USElTPiByZWdzOwogCiAgICAgYXV0byBhcHBlbmRDZWxs
ID0gWyZdKEVkZ2UmIGVkZ2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFu
ZCh0aGlzLCBlZGdlKTsKICAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIoKSk7Ci0gICAg
ICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICAgICAgb3BlcmFuZHMu
YXBwZW5kKE9wZXJhbmRWYXJpYW50KFdURjo6aW5fcGxhY2U8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+
LCBXVEZNb3ZlKG9wZXJhbmQpKSk7CiAgICAgfTsKIAogICAgIGF1dG8gYXBwZW5kU3RyaW5nID0g
WyZdKEVkZ2UmIGVkZ2UpIHsKQEAgLTEwNTYyLDE5ICsxMDU2MywxOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2RlCiAgICAgICAgIEdQUlJlZyBncHIgPSBvcGVyYW5k
LmdwcigpOwogICAgICAgICByZWdzLmFwcGVuZChncHIpOwogICAgICAgICBzcGVjdWxhdGVTdHJp
bmcoZWRnZSwgZ3ByKTsKLSAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkp
OworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoT3BlcmFuZFZhcmlhbnQoV1RGOjppbl9wbGFjZTxT
cGVjdWxhdGVDZWxsT3BlcmFuZD4sIFdURk1vdmUob3BlcmFuZCkpKTsKICAgICB9OwogCiAgICAg
YXV0byBhcHBlbmRJbnQzMiA9IFsmXShFZGdlJiBlZGdlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUlu
dDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgICAgICByZWdzLmFwcGVuZChvcGVy
YW5kLmdwcigpKTsKLSAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOwor
ICAgICAgICBvcGVyYW5kcy5hcHBlbmQoT3BlcmFuZFZhcmlhbnQoV1RGOjppbl9wbGFjZTxTcGVj
dWxhdGVJbnQzMk9wZXJhbmQ+LCBXVEZNb3ZlKG9wZXJhbmQpKSk7CiAgICAgfTsKIAogICAgIGF1
dG8gYXBwZW5kQm9vbGVhbiA9IFsmXShFZGdlJiBlZGdlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUJv
b2xlYW5PcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CiAgICAgICAgIHJlZ3MuYXBwZW5kKG9w
ZXJhbmQuZ3ByKCkpOwotICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7
CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChPcGVyYW5kVmFyaWFudChXVEY6OmluX3BsYWNlPFNw
ZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiwgV1RGTW92ZShvcGVyYW5kKSkpOwogICAgIH07CiAKICAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NTAsNyArMTU1MCw3IEBAIEFMV0FZU19J
TkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VIZXgoKSAKICAgICB9IHdoaWxlIChpc0FTQ0lJSGV4
RGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpICYmIG1heGltdW1EaWdpdHMgPj0gMCk7CiAKICAg
ICBpZiAoTElLRUxZKG1heGltdW1EaWdpdHMgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKLSAg
ICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsgaGV4VmFsdWUgfTsKKyAgICAgICAgcmV0
dXJuIE51bWJlclBhcnNlUmVzdWx0IHsgc3RhdGljX2Nhc3Q8ZG91YmxlPihoZXhWYWx1ZSkgfTsK
IAogICAgIC8vIE5vIG1vcmUgcGxhY2UgaW4gdGhlIGhleFZhbHVlIGJ1ZmZlci4KICAgICAvLyBU
aGUgdmFsdWVzIGFyZSBzaGlmdGVkIG91dCBhbmQgcGxhY2VkIGludG8gdGhlIG1fYnVmZmVyOCB2
ZWN0b3IuCkBAIC0xNjA5LDcgKzE2MDksNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46
OnBhcnNlQmluYXJ5CiAgICAgfSB3aGlsZSAoaXNBU0NJSUJpbmFyeURpZ2l0T3JTZXBhcmF0b3Io
bV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAogICAgIGlmIChMSUtFTFkoIWlzQVNDSUlEaWdp
dE9yU2VwYXJhdG9yKG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24n
KSkKLSAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsgYmluYXJ5VmFsdWUgfTsKKyAg
ICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsgc3RhdGljX2Nhc3Q8ZG91YmxlPihiaW5h
cnlWYWx1ZSkgfTsKIAogICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGlnaXRzIC0gMTsgaSA+IGRp
Z2l0OyAtLWkpCiAgICAgICAgIHJlY29yZDgoZGlnaXRzW2ldKTsKQEAgLTE2NjUsNyArMTY2NSw3
IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VPY3RhbCgKICAgICB9IHdoaWxl
IChpc0FTQ0lJT2N0YWxEaWdpdE9yU2VwYXJhdG9yKG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7
CiAKICAgICBpZiAoTElLRUxZKCFpc0FTQ0lJRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpICYm
IGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICduJykpCi0gICAgICAgIHJldHVybiBOdW1iZXJQ
YXJzZVJlc3VsdCB7IG9jdGFsVmFsdWUgfTsKKyAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVz
dWx0IHsgc3RhdGljX2Nhc3Q8ZG91YmxlPihvY3RhbFZhbHVlKSB9OwogCiAgICAgZm9yIChpbnQg
aSA9IG1heGltdW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAgICAgIHJlY29yZDgo
ZGlnaXRzW2ldKTsKQEAgLTE3MjQsNyArMTcyNCw3IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhl
cjxUPjo6cGFyc2VEZWNpbWEKICAgICAgICAgfSB3aGlsZSAoaXNBU0NJSURpZ2l0T3JTZXBhcmF0
b3IobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAogICAgICAgICBpZiAoZGlnaXQgPj0gMCAm
JiBtX2N1cnJlbnQgIT0gJy4nICYmICFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVu
dCwgJ2UnKSAmJiBtX2N1cnJlbnQgIT0gJ24nKQotICAgICAgICAgICAgcmV0dXJuIE51bWJlclBh
cnNlUmVzdWx0IHsgZGVjaW1hbFZhbHVlIH07CisgICAgICAgICAgICByZXR1cm4gTnVtYmVyUGFy
c2VSZXN1bHQgeyBzdGF0aWNfY2FzdDxkb3VibGU+KGRlY2ltYWxWYWx1ZSkgfTsKIAogICAgICAg
ICBmb3IgKGludCBpID0gbWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAg
ICAgICAgcmVjb3JkOChkaWdpdHNbaV0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVQYXlsb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3BwCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVBheWxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MSwyMSArNjEsMjEgQEAgY29uc3QgdWludDhfdCogQ2FjaGVQYXlsb2FkOjpkYXRhKCkgY29u
cwogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fZGF0YSwKICAgICAgICAgW10oY29uc3QgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOwotICAgICAgICB9LAotICAgICAg
ICBbXShjb25zdCBzdGQ6OnBhaXI8TWFsbG9jUHRyPHVpbnQ4X3QsIFZNTWFsbG9jPiwgc2l6ZV90
PiYgZGF0YSkgeworICAgICAgICB9LCBbXShjb25zdCBzdGQ6OnBhaXI8TWFsbG9jUHRyPHVpbnQ4
X3QsIFZNTWFsbG9jPiwgc2l6ZV90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogewogICAgICAg
ICAgICAgcmV0dXJuIGRhdGEuZmlyc3QuZ2V0KCk7Ci0gICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgKTsKIH0KIAogc2l6ZV90IENhY2hlUGF5bG9hZDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9kYXRhLAotICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYgZGF0YSkgeworICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYgZGF0YSkgLT4gc2l6ZV90IHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLnNp
emUoKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10oY29uc3Qgc3RkOjpwYWlyPE1hbGxvY1B0cjx1
aW50OF90LCBWTU1hbGxvYz4sIHNpemVfdD4mIGRhdGEpIHsKKyAgICAgICAgfSwgW10oY29uc3Qg
c3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90LCBWTU1hbGxvYz4sIHNpemVfdD4mIGRhdGEpIC0+
IHNpemVfdCB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5zZWNvbmQ7Ci0gICAgICAgIH0pOwor
ICAgICAgICB9CisgICAgKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVVwZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVVcGRhdGUuY3BwCShyZXZpc2lvbiAyODM1
NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVVwZGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDEzICszOCw3IEBAIENhY2hlVXBkYXRlOjpDYWNoZVVwZGF0ZShG
dW5jdGlvblVwZGF0ZSYKIHsKIH0KIAotQ2FjaGVVcGRhdGU6OkNhY2hlVXBkYXRlKENhY2hlVXBk
YXRlJiYgb3RoZXIpCi17Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8R2xvYmFsVXBk
YXRlPihvdGhlci5tX3VwZGF0ZSkpCi0gICAgICAgIG5ldyAodGhpcykgQ2FjaGVVcGRhdGUoV1RG
TW92ZShXVEY6OmdldDxHbG9iYWxVcGRhdGU+KG90aGVyLm1fdXBkYXRlKSkpOwotICAgIGVsc2UK
LSAgICAgICAgbmV3ICh0aGlzKSBDYWNoZVVwZGF0ZShXVEZNb3ZlKFdURjo6Z2V0PEZ1bmN0aW9u
VXBkYXRlPihvdGhlci5tX3VwZGF0ZSkpKTsKLX0KK0NhY2hlVXBkYXRlOjpDYWNoZVVwZGF0ZShD
YWNoZVVwZGF0ZSYmKSA9IGRlZmF1bHQ7CiAKIENhY2hlVXBkYXRlJiBDYWNoZVVwZGF0ZTo6b3Bl
cmF0b3I9KENhY2hlVXBkYXRlJiYgb3RoZXIpCiB7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzNTU4KQor
KysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAor
MjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFByZXBhcmUgdG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6dmFy
aWFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBpcyB0aGUgcGllY2VzIG9mIGJ1ZyAyMzEwODYgdGhhdCBjYW4gYmUgZG9uZSB3aXRob3V0IGNo
YW5naW5nIGJlaGF2aW9yLgorCisgICAgICAgIDEuIEl0IG1ha2VzIFdURjo6Z2V0X2lmIGxvb2sg
bW9yZSBsaWtlIHN0ZDo6Z2V0X2lmIGJ5IHRha2luZyBhIHBvaW50ZXIgdG8gYSB2YXJpYW50IGlu
c3RlYWQgb2YgYSByZWZlcmVuY2UuCisgICAgICAgIDIuIHN0ZDo6dmlzaXQgaXMgcGlja2llciB0
aGFuIFdURjo6dmlzaXQuICBUaGUgZm9ybWVyIGFsbG93cyB0YWtpbmcgbGFtYmRhcyB3aXRoIGRp
ZmZlcmVudCByZXR1cm4gdHlwZXMgYXMgbG9uZworICAgICAgICBhcyB0aGUgcmV0dXJuIHR5cGVz
IGNhbiBiZSBjb252ZXJ0ZWQgdG8gdGhlIG92ZXJhbGwgZGVzaXJlZCByZXR1cm4gdHlwZS4gIHN0
ZDo6dmlzaXQgaGFzIGEgc3RhdGljX2Fzc2VydCB0aGF0IHRoZQorICAgICAgICByZXR1cm4gdHlw
ZXMgb2YgYWxsIHRoZSBsYW1iZGFzIGFyZSBhbGwgZXhhY3RseSB0aGUgc2FtZSB0eXBlLCBzbyBJ
IGV4cGxpY2l0bHkgZGVjbGFyZSB0aGUgcmV0dXJuIHR5cGUgb2YgbWFueSBsYW1iZGFzLgorICAg
ICAgICAzLiBJdCBhbHNvIHJlc29sdmVzIHNvbWUgdHlwZXMgdGhhdCB3aWxsIGJlY29tZSBhbWJp
Z3VvdXMgYnkgdXNpbmcgV1RGOjppbl9wbGFjZSwKKyAgICAgICAgd2hpY2ggd2lsbCBiZWNvbWUg
d3JhcHBlZCBieSBzdGQ6OmluX3BsYWNlX3R5cGUgdGhlbiByZW1vdmVkLgorICAgICAgICA0LiBJ
dCBhZGRzIGEgZmV3IGV4cGxpY2l0IFdURjo6IGFuZCAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4g
dGhhdCB3aWxsIGJlIG5lZWRlZCBhZnRlciByZW1vdmluZyBWYXJpYW50IGZyb20gRm9yd2FyZC5o
LgorICAgICAgICA1LiBJdCByZW1vdmVzIHRoZSBmYXN0IG1hbGxvYyBjaGVjayBpbiB0aGUgb25l
IHBsYWNlIGEgVmFyaWFudCBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgaW4gS2V5ZWREZWNvZGVy
R2VuZXJpYy5jcHAKKyAgICAgICAgKHdoaWNoIGlzIGZvciBub24tY29jb2EgcGxhdGZvcm1zKSBi
ZWNhdXNlIHN0ZDo6dmFyaWFudCBpc24ndCBmYXN0IGFsbG9jYXRlZC4KKworICAgICAgICAqIHd0
Zi9MaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5oOgorICAgICAgICAoV1RGOjpMaWtlbHlE
ZW5zZVVuc2lnbmVkSW50ZWdlclNldDo6aXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAg
ICAgICogd3RmL1ZhcmlhbnQuaDoKKyAgICAgICAgKFdURjo6Z2V0X2lmKToKKwogMjAyMS0xMC0w
NSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdy11
cCAjMjogV1RGOjpSZXRhaW5QdHI8PiBhbGxvd3MgYXNzaWdubWVudCBvZiB0d28gcG9pbnRlciB0
eXBlcyB0aGF0IGFyZSBub3QgYXNzaWduYWJsZQpJbmRleDogU291cmNlL1dURi93dGYvTGlrZWx5
RGVuc2VVbnNpZ25lZEludGVnZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9M
aWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5oCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9MaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDUsOCArMjA1LDggQEAgcHVibGljOgogICAgICAgICBJbmRleFR5cGUgb3BlcmF0b3Iq
KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV91
bmRlcmx5aW5nLAotICAgICAgICAgICAgICAgIFsmXShjb25zdCBCaXRWZWN0b3I6Oml0ZXJhdG9y
JiBpdCkgeyByZXR1cm4gKml0ICsgbV9zaGlmdDsgfSwKLSAgICAgICAgICAgICAgICBbXShjb25z
dCB0eXBlbmFtZSBTZXQ6Oml0ZXJhdG9yJiBpdCkgeyByZXR1cm4gKml0OyB9KTsKKyAgICAgICAg
ICAgICAgICBbJl0oY29uc3QgQml0VmVjdG9yOjppdGVyYXRvciYgaXQpIC0+IEluZGV4VHlwZSB7
IHJldHVybiAqaXQgKyBtX3NoaWZ0OyB9LAorICAgICAgICAgICAgICAgIFtdKGNvbnN0IHR5cGVu
YW1lIFNldDo6aXRlcmF0b3ImIGl0KSAtPiBJbmRleFR5cGUgeyByZXR1cm4gKml0OyB9KTsKICAg
ICAgICAgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvVmFyaWFudC5oCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2UvV1RGL3d0
Zi9WYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxNyArMjM4LDE3IEBAIGNvbnN0ZXhw
ciBjb25zdCB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTwKIGdldChWYXJpYW50PF9UeXBlcy4uLj4g
Y29uc3QgJiYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVz
PgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5
cGVzLi4uPiYpOworY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZT4gZ2V0X2lmKFZh
cmlhbnQ8X1R5cGVzLi4uPiopOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAu
Li4gX1R5cGVzPgotY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlwZSBjb25zdD4gZ2V0
X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYpOworY29uc3RleHByIHN0ZDo6YWRkX3BvaW50
ZXJfdDxfVHlwZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCopOwogCiB0
ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXM+Ci1jb25zdGV4cHIg
c3RkOjphZGRfcG9pbnRlcl90PHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCxfVHlwZXMu
Li4+OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4mKTsKK2NvbnN0ZXhwciBzdGQ6
OmFkZF9wb2ludGVyX3Q8dHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LCBfVHlwZXMuLi4+
OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4qKTsKIAogdGVtcGxhdGU8cHRyZGlm
Zl90IF9JbmRleCx0eXBlbmFtZSAuLi4gX1R5cGVzPgogY29uc3RleHByIHN0ZDo6YWRkX3BvaW50
ZXJfdDx0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlIGNv
bnN0PiBnZXRfaWYoCi0gICAgVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0Jik7CisgICAgVmFyaWFu
dDxfVHlwZXMuLi4+IGNvbnN0Kik7CiAKIHRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5h
bWUgLi4uIF9UeXBlcz4KIHN0cnVjdCBfX3ZhcmlhbnRfYWNjZXNzb3I7CkBAIC0xODIyLDI2ICsx
ODIyLDI2IEBAIGNvbnN0ZXhwciBjb25zdCB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTwKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgX1R5cGUsdHlwZW5hbWUgLi4uIF9UeXBlcz4KLWNvbnN0ZXhwciBz
dGQ6OmFkZF9wb2ludGVyX3Q8X1R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4mIF9fdil7
Ci0gICAgcmV0dXJuIChfX3R5cGVfaW5kZXg8X1R5cGUsX1R5cGVzLi4uPjo6X192YWx1ZSE9X192
LmluZGV4KCkpP251bGxwdHI6c3RkOjphZGRyZXNzb2YoZ2V0PF9UeXBlPihfX3YpKTsKK2NvbnN0
ZXhwciBzdGQ6OmFkZF9wb2ludGVyX3Q8X1R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4q
IF9fdikgeworICAgIHJldHVybiAoX190eXBlX2luZGV4PF9UeXBlLCBfVHlwZXMuLi4+OjpfX3Zh
bHVlICE9IF9fdi0+aW5kZXgoKSkgPyBudWxscHRyIDogc3RkOjphZGRyZXNzb2YoZ2V0PF9UeXBl
PigqX192KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlw
ZXM+Ci1jb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PF9UeXBlIGNvbnN0PiBnZXRfaWYoVmFy
aWFudDxfVHlwZXMuLi4+IGNvbnN0JiBfX3YpewotICAgIHJldHVybiAoX190eXBlX2luZGV4PF9U
eXBlLF9UeXBlcy4uLj46Ol9fdmFsdWUhPV9fdi5pbmRleCgpKT9udWxscHRyOnN0ZDo6YWRkcmVz
c29mKGdldDxfVHlwZT4oX192KSk7Citjb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PF9UeXBl
IGNvbnN0PiBnZXRfaWYoVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0KiBfX3YpIHsKKyAgICByZXR1
cm4gKF9fdHlwZV9pbmRleDxfVHlwZSwgX1R5cGVzLi4uPjo6X192YWx1ZSAhPSBfX3YtPmluZGV4
KCkpID8gbnVsbHB0ciA6IHN0ZDo6YWRkcmVzc29mKGdldDxfVHlwZT4oKl9fdikpOwogfQogCiB0
ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXM+Ci1jb25zdGV4cHIg
c3RkOjphZGRfcG9pbnRlcl90PHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCxfVHlwZXMu
Li4+OjpfX3R5cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4mIF9fdil7Ci0gICAgcmV0dXJu
ICgoX0luZGV4IT1fX3YuaW5kZXgoKSk/bnVsbHB0cjoKLSAgICAgICAgc3RkOjphZGRyZXNzb2Yo
X192YXJpYW50X2FjY2Vzc29yPF9JbmRleCxfVHlwZXMuLi4+OjpnZXQoX192KSkpOworY29uc3Rl
eHByIHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsIF9U
eXBlcy4uLj46Ol9fdHlwZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiogX192KSB7CisgICAg
cmV0dXJuICgoX0luZGV4ICE9IF9fdi0+aW5kZXgoKSkgPyBudWxscHRyIDoKKyAgICAgICAgc3Rk
OjphZGRyZXNzb2YoX192YXJpYW50X2FjY2Vzc29yPF9JbmRleCwgX1R5cGVzLi4uPjo6Z2V0KCpf
X3YpKSk7CiB9CiAKIHRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBl
cz4KLWNvbnN0ZXhwciBzdGQ6OmFkZF9wb2ludGVyX3Q8dHlwZW5hbWUgX19pbmRleGVkX3R5cGU8
X0luZGV4LF9UeXBlcy4uLj46Ol9fdHlwZSBjb25zdD4gZ2V0X2lmKAotICAgIFZhcmlhbnQ8X1R5
cGVzLi4uPiBjb25zdCYgX192KXsKLSAgICByZXR1cm4gKChfSW5kZXghPV9fdi5pbmRleCgpKT9u
dWxscHRyOgotICAgICAgICBzdGQ6OmFkZHJlc3NvZihfX3ZhcmlhbnRfYWNjZXNzb3I8X0luZGV4
LF9UeXBlcy4uLj46OmdldChfX3YpKSk7Citjb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PHR5
cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCwgX1R5cGVzLi4uPjo6X190eXBlIGNvbnN0PiBn
ZXRfaWYoCisgICAgVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0KiBfX3YpIHsKKyAgICByZXR1cm4g
KChfSW5kZXggIT0gX192LT5pbmRleCgpKSA/IG51bGxwdHIgOgorICAgICAgICBzdGQ6OmFkZHJl
c3NvZihfX3ZhcmlhbnRfYWNjZXNzb3I8X0luZGV4LCBfVHlwZXMuLi4+OjpnZXQoKl9fdikpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgX1R5cGUsdHlwZW5hbWUgLi4uIF9UeXBlcz4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI4MzU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBAQAorMjAyMS0xMC0wNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFByZXBhcmUgdG8gc3dp
dGNoIGZyb20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6dmFyaWFudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRlZFJlc3Bv
bnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJlc3BvbnNl
Qm9keSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZGluZ0V4Y2VwdGlvbiBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXF1ZXN0Ojpzb3VyY2VPYmplY3RTdG9yZUlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6c2hvd01lZGlhQ29udHJvbHNDb250ZXh0
TWVudSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6YWRkSWNlQ2FuZGlkYXRl
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjp2aWRlb1NvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpoYXNTb3VyY2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmdldFZp
ZXdlclBvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6Y2FudmFzIGNvbnN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmludFBvaW50QXR0cmlidXRlVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6b2JqZWN0QXR0cmli
dXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cmVj
dEF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnZlY3RvckF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6Om9wdGlvblNldEF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnBhaXJBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1aW50NjRBdHRyaWJ1dGVWYWx1ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1cmxBdHRyaWJ1dGVWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpwYXRoQXR0cmli
dXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y29s
b3JBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjpmbG9hdEF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OmRvdWJsZUF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnVuc2lnbmVkQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01D
b252ZXJ0V2ViR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSlNWYWx1ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Om1ldGhvZERl
dGFpbHMgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmFsdWVJbldyYXBwZWRPYmpl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVmFsdWVJbldyYXBwZWRPYmplY3Q6Om9wZXJhdG9y
IEpTQzo6SlNWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lRm9udFdlaWdodCk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6
Om1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAgICAgICAg
KiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlOjptYXRjaCBjb25z
dCk6CisgICAgICAgICogaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMU2VhcmNoUGFyYW1zOjpjcmVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpjYW52YXND
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6Y2FudmFz
RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
YW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclNoYWRl
clByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbTo6
cHJvZ3JhbSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbiBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFEZXZpY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6aW1hZ2VPck1l
ZGlhRmlsZXNDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6
Omxlbmd0aEluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVu
ZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmZsYXR0ZW4gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OnByZXBhcmVGb3JVcGxvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9ybURhdGE6OmFzQmxvYlVSTCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkdmFu
Y2VDdXJyZW50U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBCb2R5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybEhhbmRsZTo6ZW5hYmxlU1NMRm9ySG9zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsRm9ybURhdGFTdHJlYW06OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMVmVyaWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFNTTFZlcmlmaWVy
OjpDdXJsU1NMVmVyaWZpZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29s
dmVGb3JGb250UmF3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRm9u
dFJhdyk6CisKIDIwMjEtMTAtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI4MzMzNSk6IE1vbWVudHVtIHNjcm9sbGluZyBp
cyBubyBsb25nZXIgbG9ja2VkIHRvIGFuIGF4aXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCShyZXZpc2lvbiAyODM1NTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI5LDIyICsxMjksMjIgQEAgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVz
b3VyY2VSZXF1ZQogCiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVz
cG9uc2VCb2R5JiBib2R5KQogewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNv
bnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
Ym9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZm
ZXItPmNvcHkoKTsKLSAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKKyAgICB9LCBb
XShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKIH0KIAogUmVzcG9u
c2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewotICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1E
YXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0
YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
eworICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNl
Qm9keSB7CiAgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgeworICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5jcHAJKHJldmlzaW9uIDI4MzU1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
ODgsOSArMzg4LDkgQEAgUmVzb3VyY2VFcnJvciBGZXRjaEJvZHlPd25lcjo6bG9hZGluZ0Vycgog
CiBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gRmV0Y2hCb2R5T3duZXI6OmxvYWRpbmdFeGNlcHRp
b24oKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fbG9hZGluZ0Vycm9yLCBb
XShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeworICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KG1fbG9hZGluZ0Vycm9yLCBbXShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+IHsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJv
ciwgZXJyb3Iuc2FuaXRpemVkRGVzY3JpcHRpb24oKSB9OwotICAgIH0sIFtdKGNvbnN0IEV4Y2Vw
dGlvbiYgZXhjZXB0aW9uKSB7CisgICAgfSwgW10oY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24p
IC0+IHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiB7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBleGNlcHRpb24gfTsKICAgICB9LCBbXShhdXRvJiYpIC0+IHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uPiB7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjgzNTU4
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwNiw5ICsyMDYsOSBAQCB1aW50NjRfdCBJREJSZXF1ZXN0Ojpzb3Vy
Y2VPYmplY3RTdG9yZUlkCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9zb3VyY2UudmFsdWUoKSwKLSAgICAgICAgW10gKGNvbnN0IFJlZlB0cjxJREJPYmpl
Y3RTdG9yZT4mIG9iamVjdFN0b3JlKSB7IHJldHVybiBvYmplY3RTdG9yZS0+aW5mbygpLmlkZW50
aWZpZXIoKTsgfSwKLSAgICAgICAgW10gKGNvbnN0IFJlZlB0cjxJREJJbmRleD4mIGluZGV4KSB7
IHJldHVybiBpbmRleC0+aW5mbygpLm9iamVjdFN0b3JlSWRlbnRpZmllcigpOyB9LAotICAgICAg
ICBbXSAoY29uc3QgUmVmUHRyPElEQkN1cnNvcj4mKSB7IHJldHVybiAwOyB9CisgICAgICAgIFtd
IChjb25zdCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+JiBvYmplY3RTdG9yZSkgLT4gdWludDY0X3Qg
eyByZXR1cm4gb2JqZWN0U3RvcmUtPmluZm8oKS5pZGVudGlmaWVyKCk7IH0sCisgICAgICAgIFtd
IChjb25zdCBSZWZQdHI8SURCSW5kZXg+JiBpbmRleCkgLT4gdWludDY0X3QgeyByZXR1cm4gaW5k
ZXgtPmluZm8oKS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKTsgfSwKKyAgICAgICAgW10gKGNvbnN0
IFJlZlB0cjxJREJDdXJzb3I+JikgLT4gdWludDY0X3QgeyByZXR1cm4gMDsgfQogICAgICk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRy
b2xzSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjgxLDEzICs2ODEsMTMgQEAgYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6
c2hvd01lZGlhQ29udHJvbAogI2VuZGlmIC8vIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkKICAgICAgICAgICAgIFsmXSAoUmVmUHRyPEF1ZGlvVHJhY2s+JiBzZWxlY3RlZEF1ZGlvVHJh
Y2spIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogaWRNYXAudmFsdWVzKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGF1ZGlvVHJhY2sgPSBXVEY6OmdldF9p
ZjxSZWZQdHI8QXVkaW9UcmFjaz4+KHRyYWNrKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGF1ZGlvVHJhY2sgPSBXVEY6OmdldF9pZjxSZWZQdHI8QXVkaW9UcmFjaz4+KCZ0cmFjaykp
CiAgICAgICAgICAgICAgICAgICAgICAgICAoKmF1ZGlvVHJhY2spLT5zZXRFbmFibGVkKCphdWRp
b1RyYWNrID09IHNlbGVjdGVkQXVkaW9UcmFjayk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgIFsmXSAoUmVmUHRyPFRleHRUcmFjaz4mIHNlbGVjdGVkVGV4
dFRyYWNrKSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IGlkTWFwLnZhbHVl
cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiB0ZXh0VHJhY2sgPSBXVEY6Omdl
dF9pZjxSZWZQdHI8VGV4dFRyYWNrPj4odHJhY2spKQorICAgICAgICAgICAgICAgICAgICBpZiAo
YXV0byogdGV4dFRyYWNrID0gV1RGOjpnZXRfaWY8UmVmUHRyPFRleHRUcmFjaz4+KCZ0cmFjaykp
CiAgICAgICAgICAgICAgICAgICAgICAgICAoKnRleHRUcmFjayktPnNldE1vZGUoVGV4dFRyYWNr
OjpNb2RlOjpEaXNhYmxlZCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1l
ZGlhRWxlbWVudC5zZXRTZWxlY3RlZFRleHRUcmFjayhzZWxlY3RlZFRleHRUcmFjay5nZXQoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjphZGRJY2VDYW5k
aWRhdGUoCiAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBSZWZQ
dHI8UlRDSWNlQ2FuZGlkYXRlPiBjYW5kaWRhdGU7CiAgICAgaWYgKHJ0Y0NhbmRpZGF0ZSkgewot
ICAgICAgICBjYW5kaWRhdGUgPSBzd2l0Y2hPbigqcnRjQ2FuZGlkYXRlLCBbJmV4Y2VwdGlvbl0o
UlRDSWNlQ2FuZGlkYXRlSW5pdCYgaW5pdCkgLT4gUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4gewor
ICAgICAgICBjYW5kaWRhdGUgPSBXVEY6OnN3aXRjaE9uKCpydGNDYW5kaWRhdGUsIFsmZXhjZXB0
aW9uXShSVENJY2VDYW5kaWRhdGVJbml0JiBpbml0KSAtPiBSZWZQdHI8UlRDSWNlQ2FuZGlkYXRl
PiB7CiAgICAgICAgICAgICBpZiAoaW5pdC5jYW5kaWRhdGUuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCShyZXZpc2lvbiAyODM1
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9y
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgUlRDUnRwVHJhbnNmb3JtOjp+
UlRDUnRwVHJhbnNmb3JtKCkKIAogYm9vbCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQoKSBj
b25zdAogewotICAgIHJldHVybiBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0
cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVU
cmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKICAgICAgICAgcmV0dXJuIHNmcmFtZVRyYW5z
Zm9ybS0+aXNBdHRhY2hlZCgpOwogICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0
VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRUcmFu
c2Zvcm0tPmlzQXR0YWNoZWQoKTsKQEAgLTEzMSwxNCArMTMxLDE0IEBAIHZvaWQgUlRDUnRwVHJh
bnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVyKFIKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJUQ1J0
cFRyYW5zZm9ybSYgYSwgY29uc3QgUlRDUnRwVHJhbnNmb3JtJiBiKQogewotICAgIHJldHVybiBz
d2l0Y2hPbihhLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybT4mIHNmcmFtZVRyYW5zZm9ybUEpIHsKLSAgICAgICAgcmV0dXJuIHN3aXRjaE9uKGIubV90
cmFuc2Zvcm0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1l
VHJhbnNmb3JtQikgeworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGEubV90cmFuc2Zvcm0sIFsm
XShjb25zdCBSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1lVHJhbnNmb3JtQSkg
eworICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3Qg
UmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybUIpIHsKICAgICAg
ICAgICAgIHJldHVybiBzZnJhbWVUcmFuc2Zvcm1BLmdldCgpID09IHNmcmFtZVRyYW5zZm9ybUIu
Z2V0KCk7CiAgICAgICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3Jt
PiYpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSk7CiAgICAgfSwgWyZd
KGNvbnN0IFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm1BKSB7
Ci0gICAgICAgIHJldHVybiBzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRy
PFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mKSB7CisgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGIubV90cmFuc2Zvcm0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYp
IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSwgWyZdKGNvbnN0IFJlZlB0
cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm1CKSB7CiAgICAgICAgICAg
ICByZXR1cm4gc2NyaXB0VHJhbnNmb3JtQS5nZXQoKSA9PSBzY3JpcHRUcmFuc2Zvcm1CLmdldCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5j
cHAJKHJldmlzaW9uIDI4MzU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OSwxNyArNTksNiBAQCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjp+TGliV2ViUlRD
UnRwCiAgICAgc3RvcFNvdXJjZSgpOwogfQogCi1zdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OlNvdXJjZSYgYSwgY29uc3QgTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZDo6U291cmNlJiBiKQotewotICAgIHJldHVybiBzd2l0Y2hPbihhLCBbJmJd
KGNvbnN0IFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+JiBzb3VyY2UpIHsKLSAgICAg
ICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZT4+KGIpICYmIHNvdXJjZS5wdHIoKSA9PSBXVEY6OmdldDxSZWY8UmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlPj4oYikucHRyKCk7Ci0gICAgfSwgWyZiXShjb25zdCBSZWY8UmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlPiYgc291cmNlKSB7Ci0gICAgICAgIHJldHVybiBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+PihiKSAmJiBz
b3VyY2UucHRyKCkgPT0gV1RGOjpnZXQ8UmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4+
KGIpLnB0cigpOwotICAgIH0sIFsmYl0oc3RkOjpudWxscHRyX3QpIHsKLSAgICAgICAgcmV0dXJu
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpudWxscHRyX3Q+KGIpOwotICAgIH0pOwotfQot
CiB2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnN0YXJ0U291cmNlKCkKIHsKICAgICAv
LyBXZSBhc3luY2hyb25vdXNseSBzdGFydCB0aGUgc291cmNlcyB0byBndWFyYW50ZWUgbWVkaWEg
Z29lcyB0aHJvdWdoIHRoZSB0cmFuc2Zvcm0gaWYgYSB0cmFuc2Zvcm0gaXMgc2V0IHdoZW4gY3Jl
YXRpbmcgdGhlIHRyYWNrLgpAQCAtMTg0LDcgKzE3Myw3IEBAIHZvaWQgTGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6c2V0TWVkaWEKIAogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKiBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjp2aWRlb1NvdXJjZSgpCiB7Ci0gICAgcmV0dXJuIHN3aXRj
aE9uKG1fc291cmNlLAorICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc291cmNlLAogICAgICAg
ICBbXShSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiYgc291cmNlKSB7IHJldHVybiBz
b3VyY2UucHRyKCk7IH0sCiAgICAgICAgIFtdKGNvbnN0IGF1dG8mKSAtPiBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2UqIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICApOwpAQCAtMTkyLDcgKzE4
MSw3IEBAIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSogTGliV2ViUlRDUnQKIAogYm9vbCBM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpoYXNTb3VyY2UoKSBjb25zdAogewotICAgIHJldHVy
biBzd2l0Y2hPbihtX3NvdXJjZSwKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZSwK
ICAgICAgICAgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7IHJldHVybiBmYWxzZTsgfSwKICAg
ICAgICAgW10oY29uc3QgYXV0byYpIHsgcmV0dXJuIHRydWU7IH0KICAgICApOwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCShyZXZpc2lvbiAyODM1
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSVmll
d2VyUG9zZT4+IFdlYgogICAgICAgICBhdXRvIHRyYW5zZm9ybSA9IFdlYlhSUmlnaWRUcmFuc2Zv
cm06OmNyZWF0ZShwb3NlLT50cmFuc2Zvcm0oKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldCk7CiAK
ICAgICAgICAgLy8gU2V0IHByb2plY3Rpb24gbWF0cml4IGZvciBlYWNoIHZpZXcKLSAgICAgICAg
c3RkOjphcnJheTxmbG9hdCwgMTY+IHByb2plY3Rpb24gPSBzd2l0Y2hPbihmcmFtZURhdGEudmll
d3NbaW5kZXhdLnByb2plY3Rpb24sIFsmXShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6Rm92JiBmb3YpIHsKKyAgICAgICAgc3RkOjphcnJheTxmbG9hdCwgMTY+IHByb2plY3Rp
b24gPSBXVEY6OnN3aXRjaE9uKGZyYW1lRGF0YS52aWV3c1tpbmRleF0ucHJvamVjdGlvbiwgWyZd
KGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3YmIGZvdikgewogICAgICAg
ICAgICAgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7
CiAgICAgICAgICAgICBkb3VibGUgZmFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRo
RmFyKCk7CiAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9q
ZWN0aW9uKGZvdi51cCwgZm92LmRvd24sIGZvdi5sZWZ0LCBmb3YucmlnaHQsIG5lYXIsIGZhciku
dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJXZWJHTExheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAJKHJldmlzaW9uIDI4MzU1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjczLDcgKzI3Myw3IEBAIEhUTUxDYW52YXNFbGVtZW50KiBXZWJYUldlYkdMTGF5
ZXI6OmNhbnYKICAgICAgICAgYXV0byBjYW52YXMgPSBiYXNlQ29udGV4dC0+Y2FudmFzKCk7CiAg
ICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNhbnZhcywgW10oY29uc3QgUmVmUHRyPEhUTUxD
YW52YXNFbGVtZW50PiYgY2FudmFzKSB7CiAgICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldCgp
OwotICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPikgeworICAgICAg
ICB9LCBbXShjb25zdCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPikgLT4gSFRNTENhbnZhc0VsZW1l
bnQqIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgiYmFzZUxheWVyIG9mIGEgV2Vi
WFJXZWJHTExheWVyIG11c3QgYmUgYW4gSFRNTENhbnZhc0VsZW1lbnQiKTsKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgx
LDcgKzc4MSw3IEBAIEludFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OmludFBvaW50QXR0cmkKIHsK
ICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVydHlOYW1lKTsKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKEludFBvaW50JiB0eXBlZFZh
bHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoSW50UG9pbnQmIHR5cGVk
VmFsdWUpIC0+IEludFBvaW50IHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtdIChh
dXRvJikgeyByZXR1cm4gSW50UG9pbnQoKTsgfQogICAgICk7CiB9CkBAIC03OTAsNyArNzkwLDcg
QEAgQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjpvYmplY3RBdAogewogICAgIGF1dG8g
dmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIEFYSUQgbm9kZUlE
ID0gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKEFYSUQmIHR5cGVkVmFsdWUpIHsg
cmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChBWElEJiB0eXBlZFZhbHVlKSAtPiBB
WElEIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCiAgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4g
SW52YWxpZEFYSUQ7IH0KICAgICApOwogCkBAIC04MDIsNyArODAyLDcgQEAgVCBBWElzb2xhdGVk
T2JqZWN0OjpyZWN0QXR0cmlidXRlVmFsdWUoQQogewogICAgIGF1dG8gdmFsdWUgPSBtX3Byb3Bl
cnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVl
LAotICAgICAgICBbXSAoVCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAg
ICAgICAgW10gKFQmIHR5cGVkVmFsdWUpIC0+IFQgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKICAg
ICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBUIHsgfTsgfQogICAgICk7CiB9CkBAIC04MTIsNyAr
ODEyLDcgQEAgVmVjdG9yPFQ+IEFYSXNvbGF0ZWRPYmplY3Q6OnZlY3RvckF0dHJpYgogewogICAg
IGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAgICAgICBbXSAoVmVjdG9yPFQ+JiB0eXBlZFZhbHVl
KSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoVmVjdG9yPFQ+JiB0eXBlZFZh
bHVlKSAtPiBWZWN0b3I8VD4geyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKICAgICAgICAgW10gKGF1
dG8mKSB7IHJldHVybiBWZWN0b3I8VD4oKTsgfQogICAgICk7CiB9CkBAIC04MjIsNyArODIyLDcg
QEAgT3B0aW9uU2V0PFQ+IEFYSXNvbGF0ZWRPYmplY3Q6Om9wdGlvblNldAogewogICAgIGF1dG8g
dmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKHZhbHVlLAotICAgICAgICBbXSAoVCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlw
ZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKFQmIHR5cGVkVmFsdWUpIC0+IE9wdGlvblNldDxUPiB7
IHJldHVybiB0eXBlZFZhbHVlOyB9LAogICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIE9wdGlv
blNldDxUPigpOyB9CiAgICAgKTsKIH0KQEAgLTgzMiw3ICs4MzIsNyBAQCBzdGQ6OnBhaXI8VCwg
VD4gQVhJc29sYXRlZE9iamVjdDo6cGFpckF0CiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJvcGVy
dHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUs
Ci0gICAgICAgIFtdIChzdGQ6OnBhaXI8VCwgVD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWU7IH0sCisgICAgICAgIFtdIChzdGQ6OnBhaXI8VCwgVD4mIHR5cGVkVmFsdWUpIC0+IHN0
ZDo6cGFpcjxULCBUPiB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAogICAgICAgICBbXSAoYXV0byYp
IHsgcmV0dXJuIHN0ZDo6cGFpcjxULCBUPigwLCAxKTsgfQogICAgICk7CiB9CkBAIC04NDEsOCAr
ODQxLDggQEAgdWludDY0X3QgQVhJc29sYXRlZE9iamVjdDo6dWludDY0QXR0cmlidQogewogICAg
IGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAgICAgICBbXSAodWludDY0X3QmIHR5cGVkVmFsdWUp
IHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCi0gICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gMDsg
fQorICAgICAgICBbXSAodWludDY0X3QmIHR5cGVkVmFsdWUpIC0+IHVpbnQ2NF90IHsgcmV0dXJu
IHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChhdXRvJikgLT4gdWludDY0X3QgeyByZXR1cm4g
MDsgfQogICAgICk7CiB9CiAKQEAgLTg1MCw3ICs4NTAsNyBAQCBVUkwgQVhJc29sYXRlZE9iamVj
dDo6dXJsQXR0cmlidXRlVmFsdWUoCiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJvcGVydHlNYXAu
Z2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAg
ICAgIFtdIChVUkwmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAg
IFtdIChVUkwmIHR5cGVkVmFsdWUpIC0+IFVSTCB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAogICAg
ICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIFVSTCgpOyB9CiAgICAgKTsKIH0KQEAgLTg1OSw3ICs4
NTksNyBAQCBQYXRoIEFYSXNvbGF0ZWRPYmplY3Q6OnBhdGhBdHRyaWJ1dGVWYWx1CiB7CiAgICAg
YXV0byB2YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtdIChQYXRoJiB0eXBlZFZhbHVlKSB7IHJl
dHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoUGF0aCYgdHlwZWRWYWx1ZSkgLT4gUGF0
aCB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAogICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIFBh
dGgoKTsgfQogICAgICk7CiB9CkBAIC04NjgsNyArODY4LDcgQEAgQ29sb3IgQVhJc29sYXRlZE9i
amVjdDo6Y29sb3JBdHRyaWJ1dGVWYQogewogICAgIGF1dG8gdmFsdWUgPSBtX3Byb3BlcnR5TWFw
LmdldChwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAg
ICAgICBbXSAoQ29sb3ImIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAg
ICAgIFtdIChDb2xvciYgdHlwZWRWYWx1ZSkgLT4gQ29sb3IgeyByZXR1cm4gdHlwZWRWYWx1ZTsg
fSwKICAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBDb2xvcigpOyB9CiAgICAgKTsKIH0KQEAg
LTg3Nyw4ICs4NzcsOCBAQCBmbG9hdCBBWElzb2xhdGVkT2JqZWN0OjpmbG9hdEF0dHJpYnV0ZVZh
CiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFtdIChmbG9hdCYgdHlwZWRW
YWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKLSAgICAgICAgW10gKGF1dG8mKSB7IHJldHVy
biAwOyB9CisgICAgICAgIFtdIChmbG9hdCYgdHlwZWRWYWx1ZSkgLT4gZmxvYXQgeyByZXR1cm4g
dHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwLjBmOyB9CiAgICAg
KTsKIH0KIApAQCAtODg2LDggKzg4Niw4IEBAIGRvdWJsZSBBWElzb2xhdGVkT2JqZWN0Ojpkb3Vi
bGVBdHRyaWJ1dGUKIHsKICAgICBhdXRvIHZhbHVlID0gbV9wcm9wZXJ0eU1hcC5nZXQocHJvcGVy
dHlOYW1lKTsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKLSAgICAgICAgW10gKGRv
dWJsZSYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKLSAgICAgICAgW10gKGF1
dG8mKSB7IHJldHVybiAwOyB9CisgICAgICAgIFtdIChkb3VibGUmIHR5cGVkVmFsdWUpIC0+IGRv
dWJsZSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJu
IDAuMDsgfQogICAgICk7CiB9CiAKQEAgLTg5NSw4ICs4OTUsOCBAQCB1bnNpZ25lZCBBWElzb2xh
dGVkT2JqZWN0Ojp1bnNpZ25lZEF0dHJpCiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcHJvcGVydHlN
YXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24odmFsdWUsCi0g
ICAgICAgIFtdICh1bnNpZ25lZCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwK
LSAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiAwOyB9CisgICAgICAgIFtdICh1bnNpZ25lZCYg
dHlwZWRWYWx1ZSkgLT4gdW5zaWduZWQgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAg
W10gKGF1dG8mKSB7IHJldHVybiAwdTsgfQogICAgICk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvSURMVHlwZXMuaAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvSURMVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgPHd0Zi9CcmlnYW5kLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjaWYgRU5BQkxFKFdF
QkdMKQogI2luY2x1ZGUgIldlYkdMQW55LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCShyZXZpc2lvbiAyODM1NTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgwLDQ5ICs4MCwzOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNWYWx1ZSBj
b252ZXJ0VG9KU1ZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBXZWJHTEFueSYgYW55KQogewogICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGFueSwKLSAgICAgICAgW10gKHN0ZDo6bnVsbHB0cl90KSB7
CisgICAgICAgIFtdIChzdGQ6Om51bGxwdHJfdCkgLT4gSlNWYWx1ZSB7CiAgICAgICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIChib29sIHZhbHVlKSB7Cisg
ICAgICAgIH0sIFtdIChib29sIHZhbHVlKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgICAgIHJldHVy
biBqc0Jvb2xlYW4odmFsdWUpOwotICAgICAgICB9LAotICAgICAgICBbXSAoaW50IHZhbHVlKSB7
CisgICAgICAgIH0sIFtdIChpbnQgdmFsdWUpIC0+IEpTVmFsdWUgewogICAgICAgICAgICAgcmV0
dXJuIGpzTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10gKHVuc2lnbmVkIHZh
bHVlKSB7CisgICAgICAgIH0sIFtdICh1bnNpZ25lZCB2YWx1ZSkgLT4gSlNWYWx1ZSB7CiAgICAg
ICAgICAgICByZXR1cm4ganNOdW1iZXIodmFsdWUpOwotICAgICAgICB9LAotICAgICAgICBbXSAo
bG9uZyBsb25nIHZhbHVlKSB7CisgICAgICAgIH0sIFtdIChsb25nIGxvbmcgdmFsdWUpIC0+IEpT
VmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgfSwK
LSAgICAgICAgW10gKGZsb2F0IHZhbHVlKSB7CisgICAgICAgIH0sIFtdIChmbG9hdCB2YWx1ZSkg
LT4gSlNWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIodmFsdWUpOwotICAgICAg
ICB9LAotICAgICAgICBbJl0gKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsKKyAgICAgICAgfSwgWyZd
IChjb25zdCBTdHJpbmcmIHZhbHVlKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHZhbHVlKTsKLSAgICAg
ICAgfSwKLSAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8Ym9vbD4mIHZhbHVlcykgeworICAgICAg
ICB9LCBbJl0gKGNvbnN0IFZlY3Rvcjxib29sPiYgdmFsdWVzKSAtPiBKU1ZhbHVlIHsKICAgICAg
ICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CiAgICAgICAgICAgICBmb3IgKGF1dG8m
IHZhbHVlIDogdmFsdWVzKQogICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzQm9vbGVhbih2
YWx1ZSkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxpc3QuaGFzT3ZlcmZsb3dlZCgp
KTsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheSgmZ2xvYmFsT2JqZWN0LCBzdGF0
aWNfY2FzdDxKU0M6OkFycmF5QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgbGlzdCk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGludD4mIHZhbHVlcykgeworICAg
ICAgICB9LCBbJl0gKGNvbnN0IFZlY3RvcjxpbnQ+JiB2YWx1ZXMpIC0+IEpTVmFsdWUgewogICAg
ICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAgICAgICAgICAgIGZvciAoYXV0
byYgdmFsdWUgOiB2YWx1ZXMpCiAgICAgICAgICAgICAgICAgbGlzdC5hcHBlbmQoanNOdW1iZXIo
dmFsdWUpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsaXN0Lmhhc092ZXJmbG93ZWQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoJmdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8SlNDOjpBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIGxpc3QpOwot
ICAgICAgICB9LAotICAgICAgICBbJl0gKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHZhbHVlcykg
eworICAgICAgICB9LCBbJl0gKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHZhbHVlcykgLT4gSlNW
YWx1ZSB7CiAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwogICAgICAgICAg
ICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlcykKICAgICAgICAgICAgICAgICBsaXN0LmFwcGVu
ZChqc051bWJlcih2YWx1ZSkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxpc3QuaGFz
T3ZlcmZsb3dlZCgpKTsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheSgmZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDxKU0M6OkFycmF5QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRy
KSwgbGlzdCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEZsb2F0MzJB
cnJheT4mIGFycmF5KSB7CisgICAgICAgIH0sIFsmXSAoY29uc3QgUmVmUHRyPEZsb2F0MzJBcnJh
eT4mIGFycmF5KSB7CiAgICAgICAgICAgICByZXR1cm4gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVj
dCwgJmdsb2JhbE9iamVjdCwgYXJyYXkuZ2V0KCkpOwogICAgICAgICB9LAogICAgICAgICBbJl0g
KGNvbnN0IFJlZlB0cjxJbnQzMkFycmF5PiYgYXJyYXkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BheW1lbnRNZXRob2RDaGFuZ2VF
dmVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDI4MzU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU0M6OkpTVmFsdWUgSlNQ
YXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Om1ldGhvZERldGFpbHMoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gY2FjaGVkUHJvcGVy
dHlWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpcywgd3JhcHBlZCgpLmNhY2hlZE1ldGhv
ZERldGFpbHMoKSwgW3RoaXMsICZsZXhpY2FsR2xvYmFsT2JqZWN0XSB7Ci0gICAgICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKHdyYXBwZWQoKS5tZXRob2REZXRhaWxzKCksIFtdKEpTQzo6SlNWYWx1
ZSBtZXRob2REZXRhaWxzKSB7CisgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHdyYXBwZWQo
KS5tZXRob2REZXRhaWxzKCksIFtdKEpTQzo6SlNWYWx1ZSBtZXRob2REZXRhaWxzKSAtPiBKU0M6
OkpTVmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIG1ldGhvZERldGFpbHMgPyBtZXRob2REZXRh
aWxzIDogSlNDOjpqc051bGwoKTsKLSAgICAgICAgfSwgWyZsZXhpY2FsR2xvYmFsT2JqZWN0XShj
b25zdCBQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQ6Ok1ldGhvZERldGFpbHNGdW5jdGlvbiYgZnVu
Y3Rpb24pIHsKKyAgICAgICAgfSwgWyZsZXhpY2FsR2xvYmFsT2JqZWN0XShjb25zdCBQYXltZW50
TWV0aG9kQ2hhbmdlRXZlbnQ6Ok1ldGhvZERldGFpbHNGdW5jdGlvbiYgZnVuY3Rpb24pIC0+IEpT
Qzo6SlNWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24obGV4aWNhbEdsb2JhbE9i
amVjdCkuZ2V0KCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmFsdWVJbldyYXBwZWRPYmplY3QuaAkocmV2aXNpb24g
MjgzNTU4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIGlubGluZSBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0OjpvcGVyYXRvciAKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Zh
bHVlLCBbXSAoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICB9LCBbXSAoY29uc3QgV2VhayYgdmFsdWUpIHsKKyAgICB9LCBbXSAoY29uc3QgV2VhayYgdmFs
dWUpIC0+IEpTQzo6SlNWYWx1ZSB7CiAgICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKICAgICB9
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDcgKzkxOCw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWUKIHN0YXRpYyBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVGb250V2VpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogewogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVGb250V2VpZ2h0UmF3KHJh
bmdlKSkgewotICAgICAgICByZXR1cm4gc3dpdGNoT24oKnJlc3VsdCwgW10gKENTU1ZhbHVlSUQg
dmFsdWVJRCkgeworICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbigqcmVzdWx0LCBbXSAoQ1NT
VmFsdWVJRCB2YWx1ZUlEKSB7CiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWVJRCk7CiAgICAgICAgIH0sIFtdIChk
b3VibGUgd2VpZ2h0TnVtYmVyKSB7CiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh3ZWlnaHROdW1iZXIsIENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCShyZXZpc2lvbiAyODM1
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI5LDE1ICsxMjksMTUgQEAgRXZlbnRJbnRlcmZhY2UgTWVzc2FnZUV2ZW50OjpldmVu
dEludGVyZgogCiBzaXplX3QgTWVzc2FnZUV2ZW50OjptZW1vcnlDb3N0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2RhdGEsIFtdIChjb25zdCBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0JikgeworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fZGF0YSwgW10gKGNvbnN0IEpT
VmFsdWVJbldyYXBwZWRPYmplY3QmKSAtPiBzaXplX3QgewogICAgICAgICByZXR1cm4gMDsKLSAg
ICB9LCBbXSAoY29uc3QgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIGRhdGEpIHsKKyAgICB9
LCBbXSAoY29uc3QgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIGRhdGEpIC0+IHNpemVfdCB7
CiAgICAgICAgIHJldHVybiBkYXRhLT5tZW1vcnlDb3N0KCk7Ci0gICAgfSwgW10gKGNvbnN0IFN0
cmluZyYgc3RyaW5nKSB7CisgICAgfSwgW10gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAtPiBzaXpl
X3QgewogICAgICAgICByZXR1cm4gc3RyaW5nLnNpemVJbkJ5dGVzKCk7Ci0gICAgfSwgW10gKGNv
bnN0IFJlZjxCbG9iPiYgYmxvYikgeworICAgIH0sIFtdIChjb25zdCBSZWY8QmxvYj4mIGJsb2Ip
IC0+IHNpemVfdCB7CiAgICAgICAgIHJldHVybiBibG9iLT5zaXplKCk7Ci0gICAgfSwgW10gKGNv
bnN0IFJlZjxBcnJheUJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFtdIChjb25zdCBSZWY8QXJy
YXlCdWZmZXI+JiBidWZmZXIpIC0+IHNpemVfdCB7CiAgICAgICAgIHJldHVybiBidWZmZXItPmJ5
dGVMZW5ndGgoKTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJ
KHJldmlzaW9uIDI4MzU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI3Myw3ICsyMjczLDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VU
b05leHRNaXNzcGVsbGluZyhibwogCiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
KSkgewogICAgICAgICBhdXRvIGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcigqY2xpZW50
KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsZWRXb3JkT3JVbmdyYW1t
YXRpY2FsUGhyYXNlKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKTsKLSAgICAgICAgaWYgKGF1
dG8gd29yZCA9IFdURjo6Z2V0X2lmPFRleHRDaGVja2luZ0hlbHBlcjo6TWlzc3BlbGxlZFdvcmQ+
KGZvdW5kSXRlbSkpCisgICAgICAgIGlmIChhdXRvKiB3b3JkID0gV1RGOjpnZXRfaWY8VGV4dENo
ZWNraW5nSGVscGVyOjpNaXNzcGVsbGVkV29yZD4oJmZvdW5kSXRlbSkpCiAgICAgICAgICAgICBt
aXNzcGVsbGVkV29yZCA9IFdURk1vdmUoKndvcmQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB1bmdyYW1tYXRpY2FsUGhyYXNlID0gV1RGOjpnZXQ8VGV4dENoZWNraW5nSGVscGVyOjpVbmdy
YW1tYXRpY2FsUGhyYXNlPihXVEZNb3ZlKGZvdW5kSXRlbSkpOwpAQCAtMjMwMCw3ICsyMzAwLDcg
QEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhibwogICAgICAgICAKICAg
ICAgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSkgewogICAgICAgICAgICAgYXV0
byBmb3VuZEl0ZW0gPSBUZXh0Q2hlY2tpbmdIZWxwZXIoKmNsaWVudCgpLCBzcGVsbGluZ1NlYXJj
aFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGVkV29yZE9yVW5ncmFtbWF0aWNhbFBocmFzZShpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byB3b3JkID0gV1RG
OjpnZXRfaWY8VGV4dENoZWNraW5nSGVscGVyOjpNaXNzcGVsbGVkV29yZD4oZm91bmRJdGVtKSkK
KyAgICAgICAgICAgIGlmIChhdXRvKiB3b3JkID0gV1RGOjpnZXRfaWY8VGV4dENoZWNraW5nSGVs
cGVyOjpNaXNzcGVsbGVkV29yZD4oJmZvdW5kSXRlbSkpCiAgICAgICAgICAgICAgICAgbWlzc3Bl
bGxlZFdvcmQgPSBXVEZNb3ZlKCp3b3JkKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICB1bmdyYW1tYXRpY2FsUGhyYXNlID0gV1RGOjpnZXQ8VGV4dENoZWNraW5nSGVscGVyOjpV
bmdyYW1tYXRpY2FsUGhyYXNlPihXVEZNb3ZlKGZvdW5kSXRlbSkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDI4MzU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIGJvb2wgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
OkV4Y2x1c2lvblJ1bGU6Om1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN3aXRjaE9uKHJ1bGUsIFsmZWxlbWVudF0gKEVsZW1lbnRSdWxlIHJ1bGUpIHsK
KyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihydWxlLCBbJmVsZW1lbnRdIChFbGVtZW50UnVsZSBy
dWxlKSB7CiAgICAgICAgIHJldHVybiBydWxlLmxvY2FsTmFtZSA9PSBlbGVtZW50LmxvY2FsTmFt
ZSgpOwogICAgIH0sIFsmZWxlbWVudF0gKEF0dHJpYnV0ZVJ1bGUgcnVsZSkgewogICAgICAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50LmdldEF0dHJpYnV0ZShydWxlLm5h
bWUpLCBydWxlLnZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFy
YW1zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFt
cy5jcHAJKHJldmlzaW9uIDI4MzU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNo
UGFyYW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsOSBAQCBFeGNlcHRpb25PcjxS
ZWY8VVJMU2VhcmNoUGFyYW1zPj4gVVJMU2VhCiAgICAgICAgICAgICBwYWlycy5hcHBlbmQoe3Bh
aXJbMF0sIHBhaXJbMV19KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBVUkxTZWFyY2hQYXJhbXMoV1RGTW92ZShwYWlycykpKTsKLSAgICB9LCBbJl0oY29uc3QgVmVj
dG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4mIHBhaXJzKSB7CisgICAgfSwg
WyZdKGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYWly
cykgLT4gRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVVJMU2VhcmNoUGFyYW1zKHBhaXJzKSk7Ci0gICAgfSwgWyZdKGNvbnN0
IFN0cmluZyYgc3RyaW5nKSB7CisgICAgfSwgWyZdKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAtPiBF
eGNlcHRpb25PcjxSZWY8VVJMU2VhcmNoUGFyYW1zPj4gewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMoc3RyaW5nLCBudWxscHRyKSk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgdmFyaWFudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw3ICsxMTEsNyBAQCBJbnNwZWN0b3JDYW52YXM6Okluc3BlY3RvckNhbnZhcyhD
YW52YXNSCiAKIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEluc3BlY3RvckNhbnZhczo6Y2FudmFz
Q29udGV4dCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGNvbnRleHRXcmFwcGVyID0gV1RGOjpn
ZXRfaWY8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYW52YXNSZW5kZXJpbmdDb250ZXh0Pj4obV9j
b250ZXh0KSkKKyAgICBpZiAoYXV0byogY29udGV4dFdyYXBwZXIgPSBXVEY6OmdldF9pZjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+PigmbV9jb250ZXh0KSkK
ICAgICAgICAgcmV0dXJuICZjb250ZXh0V3JhcHBlci0+Z2V0KCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CkBAIC0xMjQsOCArMTI0LDcgQEAgSFRNTENhbnZhc0VsZW1lbnQqIEluc3BlY3RvckNh
bnZhczo6Y2FudgogICAgICAgICAgICAgaWYgKGlzPEhUTUxDYW52YXNFbGVtZW50Pihjb250ZXh0
LmNhbnZhc0Jhc2UoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2Fu
dmFzRWxlbWVudD4oY29udGV4dC5jYW52YXNCYXNlKCkpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIChNb25vc3RhdGUpIHsKKyAgICAgICAgfSwg
W10gKE1vbm9zdGF0ZSkgLT4gSFRNTENhbnZhc0VsZW1lbnQqIHsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
QEAgLTEzOSw4ICsxMzgsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJbnNwZWN0b3JDYW52
YXM6CiAgICAgICAgIFtdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ+IGNvbnRleHRXcmFwcGVyKSB7CiAgICAgICAgICAgICBhdXRvJiBjb250ZXh0ID0gY29u
dGV4dFdyYXBwZXIuZ2V0KCk7CiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jYW52YXNCYXNl
KCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICB9LAotICAgICAgICBbXSAoTW9u
b3N0YXRlKSB7CisgICAgICAgIH0sIFtdIChNb25vc3RhdGUpIC0+IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTg5Myw4ICs4OTEsNyBAQCBSZWY8UHJvdG9j
b2w6OkNhbnZhczo6Q2FudmFzPiBJbnNwZWN0b3JDCiAgICAgICAgICAgICAgICAgcmV0dXJuIFBy
b3RvY29sOjpDYW52YXM6OkNvbnRleHRUeXBlOjpXZWJHTDI7CiAjZW5kaWYKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIChNb25vc3RhdGUp
IHsKKyAgICAgICAgfSwgW10gKE1vbm9zdGF0ZSkgLT4gQ29udGV4dFR5cGVUeXBlIHsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgfQpAQCAtOTIwLDggKzkxNyw3IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFz
OjpDYW52YXM+IEluc3BlY3RvckMKICAgICBhdXRvIGNvbnRleHRBdHRyaWJ1dGVzID0gV1RGOjpz
d2l0Y2hPbihtX2NvbnRleHQsCiAgICAgICAgIFtdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENh
bnZhc1JlbmRlcmluZ0NvbnRleHQ+IGNvbnRleHRXcmFwcGVyKSB7CiAgICAgICAgICAgICByZXR1
cm4gYnVpbGRPYmplY3RGb3JDYW52YXNDb250ZXh0QXR0cmlidXRlcyhjb250ZXh0V3JhcHBlcik7
Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIChNb25vc3RhdGUpIHsKKyAgICAgICAgfSwgW10gKE1v
bm9zdGF0ZSkgLT4gUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6Q29udGV4dEF0
dHJpYnV0ZXM+IHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTEwNDAsOCArMTAzNiw4IEBAIGludCBJ
bnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWMKICAgICAgICAgaWYgKGRhdGEgPT0g
aXRlbSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGF1dG8gdHJhY2VBID0g
V1RGOjpnZXRfaWY8UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4+KGRhdGEpOwotICAgICAgICBhdXRv
IHRyYWNlQiA9IFdURjo6Z2V0X2lmPFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+PihpdGVtKTsKKyAg
ICAgICAgYXV0byB0cmFjZUEgPSBXVEY6OmdldF9pZjxSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPj4o
JmRhdGEpOworICAgICAgICBhdXRvIHRyYWNlQiA9IFdURjo6Z2V0X2lmPFJlZlB0cjxTY3JpcHRD
YWxsU3RhY2s+PigmaXRlbSk7CiAgICAgICAgIGlmICh0cmFjZUEgJiYgKnRyYWNlQSAmJiB0cmFj
ZUIgJiYgKnRyYWNlQikKICAgICAgICAgICAgIHJldHVybiAoKnRyYWNlQSktPmlzRXF1YWwoKCp0
cmFjZUIpLmdldCgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clNoYWRlclByb2dyYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw3ICs2Niw3IEBAIEluc3BlY3RvclNoYWRlclByb2dyYW06Okluc3BlY3RvclNo
YWRlclAKICNpZiBFTkFCTEUoV0VCR0wpCiBXZWJHTFByb2dyYW0qIEluc3BlY3RvclNoYWRlclBy
b2dyYW06OnByb2dyYW0oKSBjb25zdAogewotICAgIGlmIChhdXRvKiBwcm9ncmFtV3JhcHBlciA9
IFdURjo6Z2V0X2lmPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8V2ViR0xQcm9ncmFtPj4obV9wcm9n
cmFtKSkKKyAgICBpZiAoYXV0byogcHJvZ3JhbVdyYXBwZXIgPSBXVEY6OmdldF9pZjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4+KCZtX3Byb2dyYW0pKQogICAgICAgICByZXR1
cm4gJnByb2dyYW1XcmFwcGVyLT5nZXQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAkocmV2aXNpb24gMjgzNTU4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQxLDE4ICszNDEsMTggQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlD
b25zaXN0ZW50KAogY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0
YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsg
fSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNv
bnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRy
KGRhdGEuZ2V0KCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYg
ZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdl
dCgpKTsgfSwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBbXShjb25zdCBHUmVmUHRy
PEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5
dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyAgICAgICAgW10oY29uc3Qg
R1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRy
KSk7IH0sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQ
dHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0s
CisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKICNlbmRpZgotICAgICAg
ICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKLSAgICAgICAgW10oY29u
c3QgUHJvdmlkZXImIHByb3ZpZGVyKSB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KKyAgICAg
ICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7
IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtNDI1LDE4ICs0MjUsMTggQEAg
Ym9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcgogc2l6ZV90IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdU
Rjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkg
eyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LAogI2lmIFVTRShDRikK
LSAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIENG
RGF0YUdldExlbmd0aChkYXRhLmdldCgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRy
PENGRGF0YVJlZj4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBDRkRhdGFHZXRMZW5ndGgoZGF0
YS5nZXQoKSk7IH0sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29uc3QgR1Jl
ZlB0cjxHQnl0ZXM+JiBkYXRhKSB7IHJldHVybiBnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkp
OyB9LAorICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IHNpemVfdCB7
IHJldHVybiBnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS0+c2l6ZSgpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQ
dHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS0+
c2l6ZSgpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKLSAgICAgICAgW10oY29uc3Qg
UHJvdmlkZXImIHByb3ZpZGVyKSB7IHJldHVybiBwcm92aWRlci5zaXplKCk7IH0KKyAgICAgICAg
W10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IHNpemVfdCB7IHJl
dHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVy
KSAtPiBzaXplX3QgeyByZXR1cm4gcHJvdmlkZXIuc2l6ZSgpOyB9CiAgICAgKTsKICAgICByZXR1
cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAkocmV2aXNpb24gMjgz
NTU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KENGRGF0YVJlZiBkYXQKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgewotICAg
ICAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KG1f
c2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKKyAgICAgICAgaWYgKGF1dG8q
IGRhdGEgPSBXVEY6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0u
c2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAg
ICB9CiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0
ciwgc2l6ZSgpKSk7CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVt
b3J5Tm90TmVlZGVkU28KIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9zZWdtZW50
cykgewogICAgICAgICBpZiAoZW50cnkuc2VnbWVudC0+aGFzT25lUmVmKCkpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIGRhdGEgPSBXVEY6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oZW50
cnkuc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKKyAgICAgICAgICAgIGlmIChhdXRvKiBkYXRh
ID0gV1RGOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZlbnRyeS5zZWdtZW50LT5tX2lt
bXV0YWJsZURhdGEpKQogICAgICAgICAgICAgICAgIE9TQWxsb2NhdG9yOjpoaW50TWVtb3J5Tm90
TmVlZGVkU29vbihjb25zdF9jYXN0PFVJbnQ4Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLT5nZXQo
KSkpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS0+Z2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERl
Y29kZXJHZW5lcmljLmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTm9kZSA9IFZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LCBib29sLCB1aW50MzJfdCwgdWludDY0X3QsIGludDMyX3QsIGludDY0X3QsIGZsb2F0
LCBkb3VibGUsIFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+LCBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXk+PjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRk
KGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgbWFrZVVuaXF1
ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KKyAgICB2b2lkIGFkZChjb25zdCBT
dHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQogICAgIE5v
ZGUqIGdldChjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4gbV9tYXAuZ2V0KGtleSk7IH0KIAog
cHJpdmF0ZToKQEAgLTIyMyw3ICsyMjMsNyBAQCBjb25zdCBUKiBLZXllZERlY29kZXJHZW5lcmlj
OjpnZXRQb2ludGVyCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBXVEY6OmdldF9pZjxUPigqbm9kZSk7CisgICAgcmV0dXJuIFdURjo6Z2V0X2lm
PFQ+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDI4MzU1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE2LDcgKzEwMTYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIEhhc2hNYXA8QXRvbVN0
cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+PiYgdHJhY2tzID0gKmdldDxIYXNoTWFwPEF0
b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4qPih2YXJpYW50VHJhY2tzKTsKKyAg
ICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4mIHRyYWNrcyA9
ICpXVEY6OmdldDxIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4q
Pih2YXJpYW50VHJhY2tzKTsKIAogICAgIC8vIElnbm9yZSBub3RpZmljYXRpb25zIGFmdGVyIGEg
RU9TLiBXZSBkb24ndCB3YW50IHRoZSB0cmFja3MgdG8gZGlzYXBwZWFyIHdoZW4gdGhlIHZpZGVv
IGlzIGZpbmlzaGVkLgogICAgIGlmIChtX2lzRW5kUmVhY2hlZCAmJiAodHlwZSA9PSBUcmFja1R5
cGU6OkF1ZGlvIHx8IHR5cGUgPT0gVHJhY2tUeXBlOjpWaWRlbykpCkBAIC0xMDcxLDE2ICsxMDcx
LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnkKICAgICAgICAg
QVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgpKTsKICAgICAgICAgdHJhY2tzLmFkZChzdHJl
YW1JZCwgdHJhY2suY29weVJlZigpKTsKIAotICAgICAgICBWYXJpYW50PEF1ZGlvVHJhY2tQcml2
YXRlJiwgVmlkZW9UcmFja1ByaXZhdGUmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJj4gdmFyaWFu
dFRyYWNrKHRyYWNrLmdldCgpKTsKKyAgICAgICAgVmFyaWFudDxBdWRpb1RyYWNrUHJpdmF0ZSos
IFZpZGVvVHJhY2tQcml2YXRlKiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSo+IHZhcmlhbnRUcmFj
aygmdHJhY2suZ2V0KCkpOwogICAgICAgICBzd2l0Y2ggKHZhcmlhbnRUcmFjay5pbmRleCgpKSB7
CiAgICAgICAgIGNhc2UgVHJhY2tUeXBlOjpBdWRpbzoKLSAgICAgICAgICAgIG1fcGxheWVyLT5h
ZGRBdWRpb1RyYWNrKGdldDxBdWRpb1RyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOworICAg
ICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soKldURjo6Z2V0PEF1ZGlvVHJhY2tQcml2
YXRlKj4odmFyaWFudFRyYWNrKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBU
cmFja1R5cGU6OlZpZGVvOgotICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFZpZGVvVHJhY2soZ2V0
PFZpZGVvVHJhY2tQcml2YXRlJj4odmFyaWFudFRyYWNrKSk7CisgICAgICAgICAgICBtX3BsYXll
ci0+YWRkVmlkZW9UcmFjaygqV1RGOjpnZXQ8VmlkZW9UcmFja1ByaXZhdGUqPih2YXJpYW50VHJh
Y2spKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRyYWNrVHlwZTo6VGV4dDoK
LSAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2soZ2V0PEluYmFuZFRleHRUcmFja1By
aXZhdGUmPih2YXJpYW50VHJhY2spKTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJh
Y2soKldURjo6Z2V0PEluYmFuZFRleHRUcmFja1ByaXZhdGUqPih2YXJpYW50VHJhY2spKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCShyZXZpc2lvbiAyODM1NTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMiArODMsMTIg
QEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheQogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oY2xvbmVkVGV4dHVyZS5nZXQoKSkuY29weUZy
b21FeHRlcm5hbFRleHR1cmUodGV4dHVyZS5pZCk7CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZShjbG9uZWRUZXh0
dXJlKSwgbV9leHRyYUZsYWdzKTsKICAgICAgICAgfSwKLSAgICAgICAgW10oY29uc3QgWVVWVGV4
dHVyZSYpCisgICAgICAgIFtdKGNvbnN0IFlVVlRleHR1cmUmKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fSwKLSAgICAgICAgW10oY29uc3QgRXh0ZXJuYWxPRVNUZXh0dXJlJikKKyAgICAgICAgW10oY29u
c3QgRXh0ZXJuYWxPRVNUZXh0dXJlJikgLT4gc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPgogICAgICAgICB7CiAgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgJKHJldmlzaW9uIDI4MzU1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlIHsKICAgICB7
CiAgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudElkOwogICAgICAgICBlbmNvZGVyIDw8IGxh
YmVsOwotICAgICAgICBzd2l0Y2hPbihwcm9wZXJ0aWVzLCBbJl0oY29uc3QgTW9ja01pY3JvcGhv
bmVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgIFdURjo6c3dpdGNoT24ocHJvcGVy
dGllcywgWyZdKGNvbnN0IE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyYgcHJvcGVydGllcykgewog
ICAgICAgICAgICAgZW5jb2RlciA8PCAodWludDhfdCkxOwogICAgICAgICAgICAgZW5jb2RlciA8
PCBwcm9wZXJ0aWVzOwogICAgICAgICB9LCBbJl0oY29uc3QgTW9ja1NwZWFrZXJQcm9wZXJ0aWVz
JiBwcm9wZXJ0aWVzKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBA
QCB1bnNpZ25lZCBGb3JtRGF0YTo6aW1hZ2VPck1lZGlhRmlsZXNDb3VuCiB7CiAgICAgdW5zaWdu
ZWQgaW1hZ2VPck1lZGlhRmlsZXNDb3VudCA9IDA7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
bV9lbGVtZW50cykgewotICAgICAgICBhdXRvKiBlbmNvZGVkRmlsZURhdGEgPSBXVEY6OmdldF9p
ZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKTsKKyAgICAg
ICAgYXV0byogZW5jb2RlZEZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGE+KCZlbGVtZW50LmRhdGEpOwogICAgICAgICBpZiAoIWVuY29kZWRGaWxl
RGF0YSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xNDAsNyArMTQwLDcgQEAgdW5zaWdu
ZWQgRm9ybURhdGE6OmltYWdlT3JNZWRpYUZpbGVzQ291bgogCiB1aW50NjRfdCBGb3JtRGF0YUVs
ZW1lbnQ6Omxlbmd0aEluQnl0ZXMoY29uc3QgRnVuY3Rpb248dWludDY0X3QoY29uc3QgVVJMJik+
JiBibG9iU2l6ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gc3dpdGNoT24oZGF0YSwKKyAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihkYXRhLAogICAgICAgICBbXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBieXRlcykgewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRl
cy5zaXplKCkpOwogICAgICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVk
RmlsZURhdGEmIGZpbGVEYXRhKSB7CkBAIC0xNjIsNyArMTYyLDcgQEAgdWludDY0X3QgRm9ybURh
dGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKAogCiBGb3JtRGF0YUVsZW1lbnQgRm9ybURhdGFFbGVt
ZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiBzd2l0Y2hPbihkYXRhLAor
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGRhdGEsCiAgICAgICAgIFtdIChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KFZl
Y3RvciB7IGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpIH0pOwogICAgICAgICB9LCBbXSAoY29u
c3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CkBAIC0xNzcs
NyArMTc3LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYQogewog
ICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIW1fZWxlbWVudHMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0
b3I8dWludDhfdD4+KG1fZWxlbWVudHMubGFzdCgpLmRhdGEpKSB7CisgICAgICAgIGlmIChhdXRv
KiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KCZtX2VsZW1lbnRzLmxhc3Qo
KS5kYXRhKSkgewogICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMjkzLDcgKzI5Myw3IEBAIFZlY3Rvcjx1aW50OF90PiBGb3JtRGF0YTo6ZmxhdHRlbigpIGNv
bnMKICAgICAvLyBDb25jYXRlbmF0ZSBhbGwgdGhlIGJ5dGUgYXJyYXlzLCBidXQgb21pdCBhbnkg
ZmlsZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8
VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQorICAgICAgICBpZiAoYXV0byogdmVjdG9y
ID0gV1RGOjpnZXRfaWY8VmVjdG9yPHVpbnQ4X3Q+PigmZWxlbWVudC5kYXRhKSkKICAgICAgICAg
ICAgIGRhdGEuYXBwZW5kKHZlY3Rvci0+ZGF0YSgpLCB2ZWN0b3ItPnNpemUoKSk7CiAgICAgfQog
ICAgIHJldHVybiBkYXRhOwpAQCAtMzY3LDcgKzM2Nyw3IEBAIEZvcm1EYXRhRm9yVXBsb2FkIEZv
cm1EYXRhOjpwcmVwYXJlRm9yVXAKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBnZW5lcmF0ZWRGaWxl
czsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGF1dG8q
IGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+
KGVsZW1lbnQuZGF0YSk7CisgICAgICAgIGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9y
bURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KCZlbGVtZW50LmRhdGEpOwogICAgICAgICBp
ZiAoIWZpbGVEYXRhKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChGaWxlU3lz
dGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGZpbGVEYXRhLT5maWxlbmFtZSkgIT0gRmls
ZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBVUkwgRm9y
bURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CiAgICAgaWYgKG1fZWxlbWVudHMuc2l6ZSgpICE9IDEp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBXVEY6Omdl
dF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4obV9lbGVtZW50cy5maXJzdCgp
LmRhdGEpKQorICAgIGlmIChhdXRvKiBibG9iRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxl
bWVudDo6RW5jb2RlZEJsb2JEYXRhPigmbV9lbGVtZW50cy5maXJzdCgpLmRhdGEpKQogICAgICAg
ICByZXR1cm4gYmxvYkRhdGEtPnVybDsKICAgICByZXR1cm4geyB9OwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuY3BwCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzcsNyArMTM3LDcgQEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cgog
ICAgIC8vIENyZWF0ZSB0aGUgbmV3IHN0cmVhbS4KICAgICBGb3JtRGF0YUVsZW1lbnQmIG5leHRJ
bnB1dCA9IGZvcm0tPnJlbWFpbmluZ0VsZW1lbnRzLmxhc3QoKTsKIAotICAgIGJvb2wgc3VjY2Vz
cyA9IHN3aXRjaE9uKG5leHRJbnB1dC5kYXRhLAorICAgIGJvb2wgc3VjY2VzcyA9IFdURjo6c3dp
dGNoT24obmV4dElucHV0LmRhdGEsCiAgICAgICAgIFtmb3JtXSAoVmVjdG9yPHVpbnQ4X3Q+JiBi
eXRlcykgewogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBieXRlcy5zaXplKCk7CiAgICAgICAg
ICAgICBNYWxsb2NQdHI8dWludDhfdCwgV1RGOjpWZWN0b3JNYWxsb2M+IGRhdGEgPSBieXRlcy5y
ZWxlYXNlQnVmZmVyKCk7CkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBzZXRIVFRQQm9keShDRk11
dGFibGVVUkxSZXF1ZXN0UmVmIAogICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2Fz
ZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVs
ZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9
PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZl
Y3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4o
JmVsZW1lbnRzWzBdLmRhdGEpKSB7CiAgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZShudWxscHRyLCB2ZWN0b3ItPmRhdGEoKSwgdmVjdG9yLT5zaXplKCkpKTsKICAg
ICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keShyZXF1ZXN0LCBkYXRhLmdl
dCgpKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAkocmV2aXNpb24gMjgzNTU4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgQ3VybEhhbmRsZTo6ZW5h
YmxlU1NMRm9ySG9zdChjb25zdCAKICNpZiBPUyhXSU5ET1dTKQogICAgIGN1cmxfZWFzeV9zZXRv
cHQobV9oYW5kbGUsIENVUkxPUFRfU1NMX09QVElPTlMsIENVUkxTU0xPUFRfTkFUSVZFX0NBKTsK
ICNlbHNlCi0gICAgaWYgKGF1dG8qIHBhdGggPSBXVEY6OmdldF9pZjxTdHJpbmc+KHNzbEhhbmRs
ZS5nZXRDQUNlcnRJbmZvKCkpKQorICAgIGlmIChhdXRvKiBwYXRoID0gV1RGOjpnZXRfaWY8U3Ry
aW5nPigmc3NsSGFuZGxlLmdldENBQ2VydEluZm8oKSkpCiAgICAgICAgIHNldENBQ2VydFBhdGgo
cGF0aC0+dXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0u
Y3BwCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEy
OCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW0KICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVhZEZyb21EYXRhKGJ5dGVzLCBidWZmZXJQb3NpdGlvbiwgYnVmZmVy
U2l6ZSk7CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2Rl
ZEZpbGVEYXRhJiBmaWxlRGF0YSkgewogICAgICAgICAgICAgICAgIHJldHVybiByZWFkRnJvbUZp
bGUoZmlsZURhdGEsIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJTaXplKTsKLSAgICAgICAgICAgIH0s
IFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YSYpIHsKKyAgICAgICAg
ICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YSYpIC0+IHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVyaWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCBDdXJsU1NMVmVyaWZpZXI6OkN1cmxTU0xWZXJpZmllcih2b2lk
KiBzCiAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgU1NMX0NUWF9nZXRfdmVyaWZ5X21vZGUo
Y3R4KSwgdmVyaWZ5Q2FsbGJhY2spOwogCiAjaWYgZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05V
TUJFUikKLSAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8Q2VydGlmaWNhdGVJbmZvOjpD
ZXJ0aWZpY2F0ZT4oc3NsSGFuZGxlLmdldENBQ2VydEluZm8oKSkpCisgICAgaWYgKGF1dG8gZGF0
YSA9IFdURjo6Z2V0X2lmPENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGU+KCZzc2xIYW5kbGUu
Z2V0Q0FDZXJ0SW5mbygpKSkKICAgICAgICAgU1NMX0NUWF9sb2FkX3ZlcmlmeV9tZW0oY3R4LCBz
dGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSksIGRh
dGEtPnNpemUoKSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAkocmV2
aXNpb24gMjgzNTU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAg
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQgogICAgIC8vIEhhbmRsZSB0
aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5v
IGZpbGVzLgogICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7CiAgICAg
aWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4o
ZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0
X2lmPFZlY3Rvcjx1aW50OF90Pj4oJmVsZW1lbnRzWzBdLmRhdGEpKSB7CiAjaWYgVVNFKFNPVVAy
KQogICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1
ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFSWSwgdmVjdG9yLT5kYXRhKCksIHZlY3Rvci0+
c2l6ZSgpKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVG
b3JGb250UmF3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JGb250UmF3LmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3
ICsxNTgsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlPiByZXNvbHZlRm9yRm9uCiAgICAg
fQogCiAgICAgaWYgKGZvbnRSYXcud2VpZ2h0KSB7Ci0gICAgICAgIGF1dG8gd2VpZ2h0ID0gc3dp
dGNoT24oKmZvbnRSYXcud2VpZ2h0LCBbJl0gKENTU1ZhbHVlSUQgaWRlbnQpIHsKKyAgICAgICAg
YXV0byB3ZWlnaHQgPSBXVEY6OnN3aXRjaE9uKCpmb250UmF3LndlaWdodCwgWyZdIChDU1NWYWx1
ZUlEIGlkZW50KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGlkZW50KSB7CiAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlTm9ybWFsOgogICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxXZWlnaHRW
YWx1ZSgpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGU+IHJl
c29sdmVGb3JGb24KICAgICB9CiAKICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemVG
cm9tSWRlbnRpZmllcihDU1NWYWx1ZUludmFsaWQpOwotICAgIGZsb2F0IHNpemUgPSBzd2l0Y2hP
bihmb250UmF3LnNpemUsIFsmXSAoQ1NTVmFsdWVJRCBpZGVudCkgeworICAgIGZsb2F0IHNpemUg
PSBXVEY6OnN3aXRjaE9uKGZvbnRSYXcuc2l6ZSwgWyZdIChDU1NWYWx1ZUlEIGlkZW50KSB7CiAg
ICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVh4U21hbGw6CiAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVYU21hbGw6CkBAIC0xOTksNyArMTk5LDcgQEAgc3RkOjpvcHRp
b25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbgogICAgICAgICAgICAgcmV0dXJuIDAuZjsK
ICAgICAgICAgfQogICAgIH0sIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpM
ZW5ndGhPclBlcmNlbnRSYXcmIGxlbmd0aE9yUGVyY2VudCkgewotICAgICAgICByZXR1cm4gc3dp
dGNoT24obGVuZ3RoT3JQZXJjZW50LCBbJl0gKGNvbnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6TGVuZ3RoUmF3JiBsZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obGVu
Z3RoT3JQZXJjZW50LCBbJl0gKGNvbnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6TGVuZ3Ro
UmF3JiBsZW5ndGgpIHsKICAgICAgICAgICAgIGF1dG8gZm9udENhc2NhZGUgPSBGb250Q2FzY2Fk
ZShGb250Q2FzY2FkZURlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpOwogICAgICAgICAgICAg
Zm9udENhc2NhZGUudXBkYXRlKGNvbnRleHQuY3NzRm9udFNlbGVjdG9yKCkpOwogICAgICAgICAg
ICAgLy8gRklYTUU6IFBhc3NpbmcgbnVsbCBmb3IgdGhlIFJlbmRlclZpZXcgcGFyYW1ldGVyIG1l
YW5zIHRoYXQgdncgYW5kIHZoIHVuaXRzIHdpbGwgZXZhbHVhdGUgdG8KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyODM1NTkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIyIEBACisyMDIxLTEwLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJlcGFyZSB0byBzd2l0Y2ggZnJvbSBXVEY6
OlZhcmlhbnQgdG8gc3RkOjp2YXJpYW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzEyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUN1cnNvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU2FtcGxlQ3Vy
c29yOjpsb2NhdGVJdGVyYXRvciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24v
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dL
U2FmZUJyb3dzaW5nV2FybmluZy5oOgorCiAyMDIxLTEwLTA1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IG1pc3NpbmcgZnVu
Y3Rpb25zIGluIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBmaWxlczsKICAgICBpZiAoYXV0byogYm9keSA9IGxvYWRQYXJhbWV0ZXJzLnJlcXVl
c3QuaHR0cEJvZHkoKSkgewogICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBib2R5LT5lbGVt
ZW50cygpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBXVEY6OmdldF9pZjxG
b3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oZWxlbWVudC5kYXRhKSkKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBibG9iRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5j
b2RlZEJsb2JEYXRhPigmZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgICAgICBmaWxlcy5hcHBl
bmRWZWN0b3IoYmxvYlJlZ2lzdHJ5LmZpbGVzSW5CbG9iKGJsb2JEYXRhLT51cmwpKTsKICAgICAg
ICAgfQogICAgICAgICBjb25zdF9jYXN0PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCY+KGxvYWRQ
YXJhbWV0ZXJzLnJlcXVlc3QpLnNldEhUVFBCb2R5KGJvZHktPnJlc29sdmVCbG9iUmVmZXJlbmNl
cygmYmxvYlJlZ2lzdHJ5KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2
aXNpb24gMjgzNTU4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jbwogCiAgICAgICAgIFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnM7
CiAgICAgICAgIGZvciAoY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50IDogcmVxdWVzdC5o
dHRwQm9keSgpLT5lbGVtZW50cygpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZmlsZURhdGEg
PSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5k
YXRhKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9y
bURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KCZlbGVtZW50LmRhdGEpKSB7CiAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEtPmZpbGVuYW1lOwogICAgICAg
ICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoKmhhbmRs
ZSkpOwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVy
ZW5jZS5oCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9G
b3JtRGF0YVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNh
bmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2Rh
dGEtPmVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0YSA9IFdURjo6
Z2V0X2lmPFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhPihlbGVtZW50
LmRhdGEpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxX
ZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oJmVsZW1lbnQuZGF0YSkp
IHsKICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+ZmlsZW5h
bWU7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkT25seSkpCiAgICAgICAgICAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGVz
LmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vy
c29yLmNwcAkocmV2aXNpb24gMjgzNTU4KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUzLDEzICsxNTMsMTEgQEAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBPcmRlcmVkTWFwOjppdGVy
YQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgICAgICByZXR1cm4gbG9jYXRlSXRlcmF0b3Ioc2FtcGxlcywgaGFzQWxsU2FtcGxl
cyk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShjb25zdCBhdXRvJiBvdGhlckl0ZXJhdG9yKSB7
CisgICAgICAgIH0sIFsmXShjb25zdCBhdXRvJiBvdGhlckl0ZXJhdG9yKSAtPiBzdGQ6Om9wdGlv
bmFsPEl0ZXJhdG9yPiB7CiAgICAgICAgICAgICBhc3NlcnRJc0hlbGQobV9sb2NhdG9yTG9jayk7
CiAgICAgICAgICAgICBtX2xvY2F0b3IgPSBvdGhlckl0ZXJhdG9yLT5zZWNvbmQtPnByZXNlbnRh
dGlvblRpbWUoKTsKICAgICAgICAgICAgIHJldHVybiBsb2NhdGVJdGVyYXRvcihzYW1wbGVzLCBo
YXNBbGxTYW1wbGVzKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdKGNvbnN0IEl0ZXJhdG9yJiBp
dGVyYXRvcikgeworICAgICAgICB9LCBbJl0oY29uc3QgSXRlcmF0b3ImIGl0ZXJhdG9yKSAtPiBz
dGQ6Om9wdGlvbmFsPEl0ZXJhdG9yPiB7CiAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7CiAg
ICAgICAgIH0KICAgICApOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCShyZXZpc2lvbiAyODM1NTgpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5oCShyZXZpc2lvbiAyODM1NTgpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAkocmV2aXNpb24gMjgzNTU4KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzNTc0KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTAtMDUgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBQcmVwYXJlIHRvIHN3
aXRjaCBmcm9tIFdURjo6VmFyaWFudCB0byBzdGQ6OnZhcmlhbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTIzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmFkZCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAyMS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFRlc3RXZWJLaXRBUEkuUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuRGFlbW9uQmFzaWNGdW5jdGlvbmFsaXR5IGlzIHRpbWluZyBvdXQKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaGVyLmNwcAkocmV2aXNpb24gMjgzNTcxKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAwLDcgKzIwMCw3IEBAIHN0cnVjdCBIYXNoZXJBZGRDdXN0b20yIHsgfTsKIAogdm9pZCBhZGQo
SGFzaGVyJiBoYXNoZXIsIGNvbnN0IEhhc2hlckFkZEN1c3RvbTImKQogewotICAgIGFkZChoYXNo
ZXIsIHsgMSwgMiwgMywgNCB9KTsKKyAgICBhZGQoaGFzaGVyLCBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8aW50PiB7IDEsIDIsIDMsIDQgfSk7CiB9CiAKIFRFU1QoV1RGLCBIYXNoZXJfY3VzdG9tKQpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAJKHJldmlzaW9u
IDI4MzU3MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NiwxNiArNTYsMTYgQEAgVEVTVChXVEZfVmFyaWFudCwgQmFzaWMp
CiAgICAgVmFyaWFudDxpbnQsIGRvdWJsZT4gdmFyaWFudCA9IDE7CiAgICAgRVhQRUNUX1RSVUUo
dmFyaWFudC5pbmRleCgpID09IDApOwogICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0PGludD4odmFy
aWFudCkgPT0gMSk7Ci0gICAgRVhQRUNUX1RSVUUoKldURjo6Z2V0X2lmPGludD4odmFyaWFudCkg
PT0gMSk7Ci0gICAgRVhQRUNUX1RSVUUoV1RGOjpnZXRfaWY8ZG91YmxlPih2YXJpYW50KSA9PSBu
dWxscHRyKTsKKyAgICBFWFBFQ1RfRVEoKldURjo6Z2V0X2lmPGludD4oJnZhcmlhbnQpLCAxKTsK
KyAgICBFWFBFQ1RfRVEoV1RGOjpnZXRfaWY8ZG91YmxlPigmdmFyaWFudCksIG51bGxwdHIpOwog
ICAgIEVYUEVDVF9UUlVFKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8aW50Pih2YXJpYW50KSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPih2YXJpYW50KSk7
CiAKICAgICB2YXJpYW50ID0gMS4wOwogICAgIEVYUEVDVF9UUlVFKHZhcmlhbnQuaW5kZXgoKSA9
PSAxKTsKICAgICBFWFBFQ1RfVFJVRShXVEY6OmdldDxkb3VibGU+KHZhcmlhbnQpID09IDEpOwot
ICAgIEVYUEVDVF9UUlVFKCpXVEY6OmdldF9pZjxkb3VibGU+KHZhcmlhbnQpID09IDEuMCk7Ci0g
ICAgRVhQRUNUX1RSVUUoV1RGOjpnZXRfaWY8aW50Pih2YXJpYW50KSA9PSBudWxscHRyKTsKKyAg
ICBFWFBFQ1RfRVEoKldURjo6Z2V0X2lmPGRvdWJsZT4oJnZhcmlhbnQpLCAxLjApOworICAgIEVY
UEVDVF9FUShXVEY6OmdldF9pZjxpbnQ+KCZ2YXJpYW50KSwgbnVsbHB0cik7CiAgICAgRVhQRUNU
X1RSVUUoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHZhcmlhbnQpKTsKICAgICBFWFBF
Q1RfRkFMU0UoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxpbnQ+KHZhcmlhbnQpKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>